06:49:45.708 [info] User scripts lifecyle file either not present or is empty. Skipping. 06:49:45.709 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=1009.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 06:49:45.709 [debug] QUERY OK source="media_profiles" db=0.1ms idle=417.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] 06:49:45.710 [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 [23985] 06:49:45.712 [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" = ?) [23985] 06:49:45.712 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 06:49:45.714 [debug] QUERY OK source="settings" db=0.4ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:49:45.715 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:49:45.719 [debug] Running yt-dlp command for action: get_downloadable_status 06:49:45.765 [debug] QUERY OK source="settings" db=0.1ms idle=54.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:49:45.765 [debug] QUERY OK source="settings" db=0.1ms idle=53.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:49:45.766 [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 [] 06:49:45.766 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/v6QiqXig8p8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/46/b2/46b263d7d3994919e834daaf3961384fae009e38108384e4051bace56fa4d406.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 06:49:48.519 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/v6QiqXig8p8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/46/b2/46b263d7d3994919e834daaf3961384fae009e38108384e4051bace56fa4d406.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: [youtube] v6QiqXig8p8: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] v6QiqXig8p8: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 06:49:48.520 [debug] Running yt-dlp command for action: download 06:49:48.520 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=993.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:49:48.521 [debug] QUERY OK source="settings" db=0.2ms idle=994.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:49:48.521 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=995.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:49:48.522 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/v6QiqXig8p8 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/59/67/5967ba58172115071282d0976d58ad7802b0bb984035af7d80a7a13c434b80a0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 06:49:51.545 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/v6QiqXig8p8 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/59/67/5967ba58172115071282d0976d58ad7802b0bb984035af7d80a7a13c434b80a0.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 WARNING: [youtube] v6QiqXig8p8: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] v6QiqXig8p8: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 06:49:51.545 [error] yt-dlp download error for media item #23985: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] v6QiqXig8p8: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] v6QiqXig8p8: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 06:49:51.546 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23985},"id":7374,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":5837496,"event":"job:exception","queue_time":546355,"attempt":15,"tags":["media_item","media_fetching","show_in_dashboard"]} 06:49:53.725 [info] {"args":{"id":23953},"id":7367,"meta":{},"system_time":1766472593725068903,"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"]} 06:49:53.725 [debug] QUERY OK source="media_items" db=0.2ms idle=198.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" = ?) [23953] 06:49:53.725 [info] User scripts lifecyle file either not present or is empty. Skipping. 06:49:53.726 [debug] QUERY OK source="sources" db=0.1ms idle=199.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 06:49:53.726 [debug] QUERY OK source="media_profiles" db=0.2ms idle=199.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] 06:49:53.727 [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 [23953] 06:49:53.727 [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" = ?) [23953] 06:49:53.728 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=2.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 06:49:53.729 [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 [] 06:49:53.729 [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 [] 06:49:53.729 [debug] Running yt-dlp command for action: get_downloadable_status 06:49:53.730 [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 [] 06:49:53.730 [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 [] 06:49:53.731 [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 [] 06:49:53.731 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/4qTZ8p4o_fY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/2d/b1/2db1f0fad457f9eb5a3a0115a21d7a3f79361be5a392684b52f0adac51338891.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 06:49:56.526 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/4qTZ8p4o_fY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/2d/b1/2db1f0fad457f9eb5a3a0115a21d7a3f79361be5a392684b52f0adac51338891.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: [youtube] 4qTZ8p4o_fY: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 4qTZ8p4o_fY: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 06:49:56.527 [debug] Running yt-dlp command for action: download 06:49:56.527 [debug] QUERY OK source="settings" db=0.2ms idle=1000.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:49:56.527 [debug] QUERY OK source="settings" db=0.1ms idle=1000.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:49:56.528 [debug] QUERY OK source="settings" db=0.1ms idle=1001.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:49:56.528 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/4qTZ8p4o_fY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/5b/c5/5bc5f7cc7bf9c231aa69545b89e95f1d88b47b78dccffc8cac49dcb0f6a52bb6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 06:50:00.132 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/4qTZ8p4o_fY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/5b/c5/5bc5f7cc7bf9c231aa69545b89e95f1d88b47b78dccffc8cac49dcb0f6a52bb6.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 WARNING: [youtube] 4qTZ8p4o_fY: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 4qTZ8p4o_fY: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 06:50:00.132 [error] yt-dlp download error for media item #23953: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] 4qTZ8p4o_fY: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] 4qTZ8p4o_fY: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 06:50:00.133 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23953},"id":7367,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6407301,"event":"job:exception","queue_time":729676,"attempt":15,"tags":["media_item","media_fetching","show_in_dashboard"]} 06:50:00.400 [info] {"source":"oban","duration":605,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:50:15.294 [info] {"source":"oban","duration":1517,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:50:45.296 [info] {"source":"oban","duration":1613,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:51:00.402 [info] {"source":"oban","duration":482,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:51:15.298 [info] {"source":"oban","duration":1435,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:51:45.300 [info] {"source":"oban","duration":1365,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:51:51.981 [info] {"args":{"id":24448},"id":7391,"meta":{},"system_time":1766472711981259327,"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"]} 06:51:51.981 [debug] QUERY OK source="media_items" db=0.2ms idle=1454.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" = ?) [24448] 06:51:51.982 [info] User scripts lifecyle file either not present or is empty. Skipping. 06:51:51.982 [debug] QUERY OK source="sources" db=0.3ms idle=1009.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 06:51:51.982 [debug] QUERY OK source="media_profiles" db=0.1ms idle=455.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] 06:51:51.983 [debug] QUERY OK source="media_items" db=0.3ms 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 [24448] 06:51:51.984 [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" = ?) [24448] 06:51:51.984 [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] 06:51:51.985 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:51:51.985 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:51:51.985 [debug] Running yt-dlp command for action: get_downloadable_status 06:51:51.996 [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 [] 06:51:51.997 [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 [] 06:51:51.997 [debug] QUERY OK source="settings" db=0.2ms 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 [] 06:51:51.997 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZpTn71P2mn0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/bb/c6/bbc64606e220116a1cd20e425994ab4729281f478fe69040a93fc14c682f0c9b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 06:51:54.914 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZpTn71P2mn0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/bb/c6/bbc64606e220116a1cd20e425994ab4729281f478fe69040a93fc14c682f0c9b.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: [youtube] ZpTn71P2mn0: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] ZpTn71P2mn0: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 06:51:54.915 [debug] Running yt-dlp command for action: download 06:51:54.915 [debug] QUERY OK source="settings" db=0.2ms idle=1387.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:51:54.915 [debug] QUERY OK source="settings" db=0.2ms idle=1387.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:51:54.916 [debug] QUERY OK source="settings" db=0.1ms idle=1388.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:51:54.916 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZpTn71P2mn0 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/49/f9/49f92bb60476e8acfe63490107e85dc623ec552aef72280ad3f75b1c67dfbe98.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 06:51:58.412 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZpTn71P2mn0 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/49/f9/49f92bb60476e8acfe63490107e85dc623ec552aef72280ad3f75b1c67dfbe98.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 WARNING: [youtube] ZpTn71P2mn0: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] ZpTn71P2mn0: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 06:51:58.413 [error] yt-dlp download error for media item #24448: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] ZpTn71P2mn0: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] ZpTn71P2mn0: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 06:51:58.414 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":24448},"id":7391,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6432007,"event":"job:exception","queue_time":372670,"attempt":15,"tags":["media_item","media_fetching","show_in_dashboard"]} 06:52:00.404 [info] {"source":"oban","duration":509,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:52:15.302 [info] {"source":"oban","duration":1482,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:52:43.090 [info] {"args":{"id":24458},"id":7392,"meta":{},"system_time":1766472763090648728,"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"]} 06:52:43.091 [debug] QUERY OK source="media_items" db=0.2ms idle=1563.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" = ?) [24458] 06:52:43.091 [info] User scripts lifecyle file either not present or is empty. Skipping. 06:52:43.091 [debug] QUERY OK source="sources" db=0.1ms idle=1009.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" = ?) [9] 06:52:43.092 [debug] QUERY OK source="media_profiles" db=0.1ms idle=564.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] 06:52:43.092 [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 [24458] 06:52:43.094 [debug] QUERY OK source="media_metadata" db=0.1ms 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" = ?) [24458] 06:52:43.095 [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] 06:52:43.095 [debug] QUERY OK source="settings" db=0.1ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:52:43.095 [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 [] 06:52:43.096 [debug] Running yt-dlp command for action: get_downloadable_status 06:52:43.108 [debug] QUERY OK source="settings" db=0.1ms idle=15.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:52:43.108 [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 [] 06:52:43.109 [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 [] 06:52:43.109 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=u_GVpZ79oZY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/12/d3/12d3d6e4dd85eb57d77bcfaae0b4107c87118dc7f18109cd6d3ef568597ce9a0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 06:52:45.304 [info] {"source":"oban","duration":1125,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:52:46.062 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=u_GVpZ79oZY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/12/d3/12d3d6e4dd85eb57d77bcfaae0b4107c87118dc7f18109cd6d3ef568597ce9a0.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: [youtube] u_GVpZ79oZY: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] u_GVpZ79oZY: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 06:52:46.062 [debug] Running yt-dlp command for action: download 06:52:46.063 [debug] QUERY OK source="settings" db=0.2ms idle=1533.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:52:46.063 [debug] QUERY OK source="settings" db=0.1ms idle=1533.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:52:46.063 [debug] QUERY OK source="settings" db=0.1ms idle=1534.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:52:46.064 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=u_GVpZ79oZY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b2/f0/b2f0a030156a231af218de11518125f200047144b8a9292a801fc04848dbddf0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 06:52:49.388 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=u_GVpZ79oZY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b2/f0/b2f0a030156a231af218de11518125f200047144b8a9292a801fc04848dbddf0.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 WARNING: [youtube] u_GVpZ79oZY: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] u_GVpZ79oZY: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 06:52:49.388 [error] yt-dlp download error for media item #24458: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] u_GVpZ79oZY: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] u_GVpZ79oZY: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 06:52:49.389 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":24458},"id":7392,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6297845,"event":"job:exception","queue_time":841359,"attempt":15,"tags":["media_item","media_fetching","show_in_dashboard"]} 06:53:00.405 [info] {"source":"oban","duration":442,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:53:15.307 [info] {"source":"oban","duration":1342,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:53:45.309 [info] {"source":"oban","duration":858,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:54:00.407 [info] {"source":"oban","duration":441,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:54:15.311 [info] {"source":"oban","duration":1292,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:54:45.313 [info] {"source":"oban","duration":1364,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:54:46.344 [info] {"args":{"id":23978},"id":7371,"meta":{},"system_time":1766472886344868652,"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"]} 06:54:46.345 [debug] QUERY OK source="media_items" db=0.2ms idle=1815.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" = ?) [23978] 06:54:46.345 [info] User scripts lifecyle file either not present or is empty. Skipping. 06:54:46.346 [debug] QUERY OK source="sources" db=0.2ms idle=1032.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 06:54:46.346 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1011.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] 06:54:46.346 [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 [23978] 06:54:46.347 [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" = ?) [23978] 06:54:46.347 [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] 06:54:46.348 [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 [] 06:54:46.348 [debug] QUERY OK source="settings" db=0.2ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:54:46.349 [debug] Running yt-dlp command for action: get_downloadable_status 06:54:46.355 [debug] QUERY OK source="settings" db=0.2ms idle=8.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:54:46.355 [debug] QUERY OK source="settings" db=0.1ms idle=8.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:54:46.356 [debug] QUERY OK source="settings" db=0.1ms idle=8.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:54:46.356 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/1arhAIkIOkQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c4/53/c453b9a3473bf6b553bf5faddb29851ccef5c52837c5081e3135afeb7805b429.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 06:54:49.212 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/1arhAIkIOkQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c4/53/c453b9a3473bf6b553bf5faddb29851ccef5c52837c5081e3135afeb7805b429.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: [youtube] 1arhAIkIOkQ: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 1arhAIkIOkQ: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 06:54:49.213 [debug] Running yt-dlp command for action: download 06:54:49.213 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1683.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:54:49.214 [debug] QUERY OK source="settings" db=0.1ms idle=1684.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:54:49.214 [debug] QUERY OK source="settings" db=0.1ms idle=1684.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:54:49.214 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/1arhAIkIOkQ --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/d8/84/d884adde40bd95bacdcde328d240db3d1997685bf4775a2b85df851d310b8bfe.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 06:54:52.555 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/1arhAIkIOkQ --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/d8/84/d884adde40bd95bacdcde328d240db3d1997685bf4775a2b85df851d310b8bfe.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 WARNING: [youtube] 1arhAIkIOkQ: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 1arhAIkIOkQ: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 06:54:52.555 [error] yt-dlp download error for media item #23978: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] 1arhAIkIOkQ: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] 1arhAIkIOkQ: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 06:54:52.556 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23978},"id":7371,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6210901,"event":"job:exception","queue_time":301111,"attempt":15,"tags":["media_item","media_fetching","show_in_dashboard"]} 06:55:00.409 [info] {"source":"oban","duration":326,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:55:12.404 [info] {"args":{"id":23987},"id":7375,"meta":{},"system_time":1766472912404780503,"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"]} 06:55:12.405 [debug] QUERY OK source="media_items" db=0.1ms idle=1874.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" = ?) [23987] 06:55:12.405 [info] User scripts lifecyle file either not present or is empty. Skipping. 06:55:12.405 [debug] QUERY OK source="sources" db=0.1ms idle=1009.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 06:55:12.405 [debug] QUERY OK source="media_profiles" db=0.1ms idle=875.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] 06:55:12.406 [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 [23987] 06:55:12.407 [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" = ?) [23987] 06:55:12.407 [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] 06:55:12.407 [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 [] 06:55:12.408 [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 [] 06:55:12.408 [debug] Running yt-dlp command for action: get_downloadable_status 06:55:12.432 [debug] QUERY OK source="settings" db=0.3ms idle=25.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:55:12.432 [debug] QUERY OK source="settings" db=0.0ms idle=25.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:55:12.433 [debug] QUERY OK source="settings" db=0.1ms idle=25.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:55:12.433 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/C73kKbeW6LE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/45/cc/45cc25d085ad5af7ac3074bbf79c6dad8141bbcba242c1a50e8593ea266b95fe.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 06:55:15.191 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/C73kKbeW6LE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/45/cc/45cc25d085ad5af7ac3074bbf79c6dad8141bbcba242c1a50e8593ea266b95fe.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: [youtube] C73kKbeW6LE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] C73kKbeW6LE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 06:55:15.192 [debug] Running yt-dlp command for action: download 06:55:15.192 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1661.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:55:15.193 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1662.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:55:15.193 [debug] QUERY OK source="settings" db=0.0ms idle=1662.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:55:15.193 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/C73kKbeW6LE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/3a/de/3adea28bfa629a5f85f10d7f48410b5bdcd28627b37c1102cd5e6a404bde62f6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 06:55:15.315 [info] {"source":"oban","duration":1361,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:55:18.455 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/C73kKbeW6LE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/3a/de/3adea28bfa629a5f85f10d7f48410b5bdcd28627b37c1102cd5e6a404bde62f6.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 WARNING: [youtube] C73kKbeW6LE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] C73kKbeW6LE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 06:55:18.455 [error] yt-dlp download error for media item #23987: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] C73kKbeW6LE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] C73kKbeW6LE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 06:55:18.456 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23987},"id":7375,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6050631,"event":"job:exception","queue_time":437123,"attempt":15,"tags":["media_item","media_fetching","show_in_dashboard"]} 06:55:45.317 [info] {"source":"oban","duration":1398,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:56:00.411 [info] {"source":"oban","duration":644,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:56:15.320 [info] {"source":"oban","duration":1443,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:56:18.538 [info] {"args":{"id":23973},"id":7384,"meta":{},"system_time":1766472978538197145,"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"]} 06:56:18.538 [debug] QUERY OK source="media_items" db=0.3ms idle=8.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [23973] 06:56:18.539 [info] User scripts lifecyle file either not present or is empty. Skipping. 06:56:18.539 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=8.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 06:56:18.540 [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] 06:56:18.540 [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 [23973] 06:56:18.541 [debug] QUERY OK source="media_metadata" db=0.2ms queue=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" = ?) [23973] 06:56:18.542 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=2.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 06:56:18.542 [debug] QUERY OK source="settings" db=0.2ms idle=2.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:56:18.543 [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 [] 06:56:18.543 [debug] Running yt-dlp command for action: get_downloadable_status 06:56:18.556 [debug] QUERY OK source="settings" db=0.1ms idle=15.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:56:18.556 [debug] QUERY OK source="settings" db=0.1ms idle=14.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:56:18.556 [debug] QUERY OK source="settings" db=0.1ms idle=14.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:56:18.557 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bwW1Kwbq6k8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f7/43/f743ebd4080b7b6c74a05e0540daeffef943d5e923d70d0553a322747935d55e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 06:56:21.700 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bwW1Kwbq6k8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f7/43/f743ebd4080b7b6c74a05e0540daeffef943d5e923d70d0553a322747935d55e.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: [youtube] bwW1Kwbq6k8: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] bwW1Kwbq6k8: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 06:56:21.700 [debug] Running yt-dlp command for action: download 06:56:21.701 [debug] QUERY OK source="settings" db=0.1ms idle=1170.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:56:21.701 [debug] QUERY OK source="settings" db=0.1ms idle=1170.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:56:21.702 [debug] QUERY OK source="settings" db=0.1ms idle=1171.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:56:21.702 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bwW1Kwbq6k8 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/1a/cc/1acc4d4a7a8bcf1cdd8b21c126302ba21ea51f1a820d9a050c3e4f4e9a589ba0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 06:56:25.289 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bwW1Kwbq6k8 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/1a/cc/1acc4d4a7a8bcf1cdd8b21c126302ba21ea51f1a820d9a050c3e4f4e9a589ba0.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 WARNING: [youtube] bwW1Kwbq6k8: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] bwW1Kwbq6k8: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 06:56:25.289 [error] yt-dlp download error for media item #23973: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] bwW1Kwbq6k8: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] bwW1Kwbq6k8: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 06:56:25.290 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23973},"id":7384,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6751302,"event":"job:exception","queue_time":778435,"attempt":15,"tags":["media_item","media_fetching","show_in_dashboard"]} 06:56:34.572 [info] {"args":{"id":24428},"id":7389,"meta":{},"system_time":1766472994572117456,"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"]} 06:56:34.572 [debug] QUERY OK source="media_items" db=0.2ms idle=42.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" = ?) [24428] 06:56:34.572 [info] User scripts lifecyle file either not present or is empty. Skipping. 06:56:34.573 [debug] QUERY OK source="sources" db=0.1ms idle=42.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" = ?) [9] 06:56:34.573 [debug] QUERY OK source="media_profiles" db=0.2ms idle=42.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] 06:56:34.574 [debug] QUERY OK source="media_items" db=0.2ms 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 [24428] 06:56:34.587 [debug] QUERY OK source="media_metadata" db=0.1ms idle=15.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" = ?) [24428] 06:56:34.587 [debug] QUERY OK source="media_profiles" db=0.1ms idle=14.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] 06:56:34.588 [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 [] 06:56:34.588 [debug] QUERY OK source="settings" db=0.1ms idle=14.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:56:34.588 [debug] Running yt-dlp command for action: get_downloadable_status 06:56:34.589 [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 [] 06:56:34.589 [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 [] 06:56:34.589 [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 [] 06:56:34.589 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=c0A_62sgbms --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/5e/5b/5e5b8e90a0e6f1795510c3385d7b20b4c643ecf28147eb2d79c67184229d1cff.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 06:56:37.460 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=c0A_62sgbms --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/5e/5b/5e5b8e90a0e6f1795510c3385d7b20b4c643ecf28147eb2d79c67184229d1cff.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: [youtube] c0A_62sgbms: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] c0A_62sgbms: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 06:56:37.461 [debug] Running yt-dlp command for action: download 06:56:37.461 [debug] QUERY OK source="settings" db=0.2ms idle=930.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:56:37.461 [debug] QUERY OK source="settings" db=0.1ms idle=930.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:56:37.462 [debug] QUERY OK source="settings" db=0.2ms idle=931.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:56:37.462 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=c0A_62sgbms --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/4a/0e/4a0e8fedce11ee0c87af0ee510c6922b458ee041660c9c52387cb0eb64ad7633.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 06:56:41.082 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=c0A_62sgbms --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/4a/0e/4a0e8fedce11ee0c87af0ee510c6922b458ee041660c9c52387cb0eb64ad7633.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 WARNING: [youtube] c0A_62sgbms: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] c0A_62sgbms: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 06:56:41.082 [error] yt-dlp download error for media item #24428: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] c0A_62sgbms: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] c0A_62sgbms: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 06:56:41.083 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":24428},"id":7389,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6510276,"event":"job:exception","queue_time":25833,"attempt":15,"tags":["media_item","media_fetching","show_in_dashboard"]} 06:56:45.322 [info] {"source":"oban","duration":1376,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:57:00.413 [info] {"source":"oban","duration":573,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:57:15.324 [info] {"source":"oban","duration":970,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:57:45.326 [info] {"source":"oban","duration":984,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:58:00.415 [info] {"source":"oban","duration":790,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:58:15.328 [info] {"source":"oban","duration":1455,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:58:45.331 [info] {"source":"oban","duration":1659,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:59:00.416 [info] {"source":"oban","duration":321,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:59:15.333 [info] {"source":"oban","duration":1351,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:59:32.933 [info] {"args":{"id":24418},"id":7388,"meta":{},"system_time":1766473172933233831,"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"]} 06:59:32.933 [debug] QUERY OK source="media_items" db=0.2ms idle=403.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [24418] 06:59:32.934 [info] User scripts lifecyle file either not present or is empty. Skipping. 06:59:32.934 [debug] QUERY OK source="sources" db=0.2ms idle=403.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" = ?) [9] 06:59:32.934 [debug] QUERY OK source="media_profiles" db=0.1ms idle=404.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] 06:59:32.935 [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 [24418] 06:59:32.977 [debug] QUERY OK source="media_metadata" db=0.1ms idle=44.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" = ?) [24418] 06:59:32.977 [debug] QUERY OK source="media_profiles" db=0.2ms idle=43.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] 06:59:32.978 [debug] QUERY OK source="settings" db=0.2ms 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 [] 06:59:32.978 [debug] QUERY OK source="settings" db=0.1ms 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 [] 06:59:32.979 [debug] Running yt-dlp command for action: get_downloadable_status 06:59:32.991 [debug] QUERY OK source="settings" db=0.1ms idle=55.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:59:32.991 [debug] QUERY OK source="settings" db=0.2ms 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 [] 06:59:32.991 [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 [] 06:59:32.991 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=hTM1yibhP9s --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/15/4a/154a04a8ab4fc18275b15b5de819b025a20291012ec7165665ba1ca2ea3530cf.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 06:59:35.933 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=hTM1yibhP9s --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/15/4a/154a04a8ab4fc18275b15b5de819b025a20291012ec7165665ba1ca2ea3530cf.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: [youtube] hTM1yibhP9s: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] hTM1yibhP9s: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 06:59:35.934 [debug] Running yt-dlp command for action: download 06:59:35.934 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1403.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:59:35.935 [debug] QUERY OK source="settings" db=0.2ms idle=1404.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:59:35.935 [debug] QUERY OK source="settings" db=0.3ms idle=1404.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:59:35.935 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=hTM1yibhP9s --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/d1/66/d166ee8eab1b32e4664ec872c088e00b3fd15f7b572e8834f693e01540b0e859.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 06:59:39.301 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=hTM1yibhP9s --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/d1/66/d166ee8eab1b32e4664ec872c088e00b3fd15f7b572e8834f693e01540b0e859.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 WARNING: [youtube] hTM1yibhP9s: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] hTM1yibhP9s: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 06:59:39.302 [error] yt-dlp download error for media item #24418: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] hTM1yibhP9s: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] hTM1yibhP9s: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 06:59:39.303 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":24418},"id":7388,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6369113,"event":"job:exception","queue_time":841695,"attempt":15,"tags":["media_item","media_fetching","show_in_dashboard"]} 06:59:45.336 [info] {"source":"oban","duration":1643,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:00:00.417 [info] {"source":"oban","duration":334,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:00:15.337 [info] {"source":"oban","duration":1024,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:00:45.339 [info] {"source":"oban","duration":1497,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:01:00.419 [info] {"source":"oban","duration":812,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:01:15.341 [info] {"source":"oban","duration":1667,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:01:45.343 [info] {"source":"oban","duration":969,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:02:00.420 [info] {"source":"oban","duration":376,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:02:15.345 [info] {"source":"oban","duration":1071,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:02:45.347 [info] {"source":"oban","duration":1196,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:03:00.421 [info] {"source":"oban","duration":552,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:03:15.349 [info] {"source":"oban","duration":1190,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:03:35.428 [info] {"args":{"id":23991},"id":7377,"meta":{},"system_time":1766473415428637499,"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"]} 07:03:35.429 [debug] QUERY OK source="media_items" db=0.2ms idle=897.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [23991] 07:03:35.429 [info] User scripts lifecyle file either not present or is empty. Skipping. 07:03:35.429 [debug] QUERY OK source="sources" db=0.1ms idle=897.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 07:03:35.430 [debug] QUERY OK source="media_profiles" db=0.1ms idle=898.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:03:35.430 [debug] QUERY OK source="media_items" db=0.3ms 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 [23991] 07:03:35.435 [debug] QUERY OK source="media_metadata" db=0.1ms idle=7.2ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [23991] 07:03:35.436 [debug] QUERY OK source="media_profiles" db=0.1ms idle=6.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 07:03:35.436 [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 [] 07:03:35.436 [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 [] 07:03:35.436 [debug] Running yt-dlp command for action: get_downloadable_status 07:03:35.437 [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 [] 07:03:35.437 [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:03:35.437 [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 [] 07:03:35.439 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/BX5o0-gPP_c --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/77/fa/77fa9a13a8d22843dde127c01fe6c61dedc8ff7271245b75a85832ed584e6322.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 07:03:38.189 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/BX5o0-gPP_c --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/77/fa/77fa9a13a8d22843dde127c01fe6c61dedc8ff7271245b75a85832ed584e6322.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: [youtube] BX5o0-gPP_c: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] BX5o0-gPP_c: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 07:03:38.189 [debug] Running yt-dlp command for action: download 07:03:38.190 [debug] QUERY OK source="settings" db=0.2ms idle=1658.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:03:38.190 [debug] QUERY OK source="settings" db=0.2ms idle=1659.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:03:38.191 [debug] QUERY OK source="settings" db=0.1ms idle=1659.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:03:38.191 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/BX5o0-gPP_c --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/99/24/99240251f84181ff4cf7956ef55319b9b63c3c6bfa52afa5cec3894824d7e58e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 07:03:41.493 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/BX5o0-gPP_c --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/99/24/99240251f84181ff4cf7956ef55319b9b63c3c6bfa52afa5cec3894824d7e58e.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 WARNING: [youtube] BX5o0-gPP_c: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] BX5o0-gPP_c: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 07:03:41.493 [error] yt-dlp download error for media item #23991: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] BX5o0-gPP_c: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] BX5o0-gPP_c: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 07:03:41.494 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23991},"id":7377,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6065065,"event":"job:exception","queue_time":469354,"attempt":15,"tags":["media_item","media_fetching","show_in_dashboard"]} 07:03:45.352 [info] {"source":"oban","duration":1900,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:04:00.424 [info] {"source":"oban","duration":566,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:04:15.354 [info] {"source":"oban","duration":1368,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:04:45.356 [info] {"source":"oban","duration":1190,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:05:00.426 [info] {"source":"oban","duration":626,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:05:15.358 [info] {"source":"oban","duration":1291,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:05:45.360 [info] {"source":"oban","duration":870,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:06:00.428 [info] {"source":"oban","duration":362,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:06:15.362 [info] {"source":"oban","duration":1060,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:06:45.364 [info] {"source":"oban","duration":1341,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:07:00.429 [info] {"source":"oban","duration":521,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:07:15.366 [info] {"source":"oban","duration":1385,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:07:45.368 [info] {"source":"oban","duration":1306,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:08:00.431 [info] {"source":"oban","duration":390,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:08:15.370 [info] {"source":"oban","duration":1429,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:08:45.372 [info] {"source":"oban","duration":1426,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:09:00.432 [info] {"source":"oban","duration":300,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:09:15.374 [info] {"source":"oban","duration":1176,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:09:45.377 [info] {"source":"oban","duration":1720,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:10:00.433 [info] {"source":"oban","duration":337,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:10:15.379 [info] {"source":"oban","duration":911,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:10:25.253 [info] {"args":{"id":24446},"id":7390,"meta":{},"system_time":1766473825253374099,"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"]} 07:10:25.254 [debug] QUERY OK source="media_items" db=0.2ms idle=720.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" = ?) [24446] 07:10:25.254 [info] User scripts lifecyle file either not present or is empty. Skipping. 07:10:25.254 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=720.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 07:10:25.254 [debug] QUERY OK source="media_profiles" db=0.1ms idle=720.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] 07:10:25.255 [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 [24446] 07:10:25.275 [debug] QUERY OK source="media_metadata" db=0.1ms idle=21.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" = ?) [24446] 07:10:25.275 [debug] QUERY OK source="media_profiles" db=0.3ms idle=21.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] 07:10:25.275 [debug] QUERY OK source="settings" db=0.0ms idle=21.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:10:25.276 [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 [] 07:10:25.276 [debug] Running yt-dlp command for action: get_downloadable_status 07:10:25.276 [debug] QUERY OK source="settings" db=0.0ms idle=21.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:10:25.277 [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:10:25.277 [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 [] 07:10:25.277 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4D69LDs_izI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/54/77/5477dadf86fe743cdd7d1e6eda2c8c657f00dc0652133a767604d2452313b357.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 07:10:28.199 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4D69LDs_izI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/54/77/5477dadf86fe743cdd7d1e6eda2c8c657f00dc0652133a767604d2452313b357.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 07:10:28.199 [debug] Running yt-dlp command for action: download 07:10:28.200 [debug] QUERY OK source="settings" db=0.2ms idle=1666.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:10:28.200 [debug] QUERY OK source="settings" db=0.1ms idle=1666.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:10:28.200 [debug] QUERY OK source="settings" db=0.1ms idle=1667.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:10:28.201 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4D69LDs_izI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/61/42/6142336d0e0836f580ba4f3ef4ab1a53992a62fafb5f09097f8a055ed4c61af5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 07:10:31.720 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4D69LDs_izI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/61/42/6142336d0e0836f580ba4f3ef4ab1a53992a62fafb5f09097f8a055ed4c61af5.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 WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 07:10:31.720 [error] yt-dlp download error for media item #24446: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 07:10:31.722 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":24446},"id":7390,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6467760,"event":"job:exception","queue_time":1001451,"attempt":15,"tags":["media_item","media_fetching","show_in_dashboard"]} 07:10:45.381 [info] {"source":"oban","duration":1306,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:11:00.434 [info] {"source":"oban","duration":542,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:11:15.383 [info] {"source":"oban","duration":1157,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:11:16.354 [info] {"args":{"id":24342},"id":7387,"meta":{},"system_time":1766473876354154524,"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"]} 07:11:16.354 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=820.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" = ?) [24342] 07:11:16.354 [info] User scripts lifecyle file either not present or is empty. Skipping. 07:11:16.355 [debug] QUERY OK source="sources" db=0.1ms idle=821.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 07:11:16.355 [debug] QUERY OK source="media_profiles" db=0.1ms idle=821.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] 07:11:16.356 [debug] QUERY OK source="media_items" db=0.2ms 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 [24342] 07:11:16.368 [debug] QUERY OK source="media_metadata" db=0.2ms queue=0.1ms idle=14.2ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [24342] 07:11:16.369 [debug] QUERY OK source="media_profiles" db=0.1ms idle=14.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] 07:11:16.369 [debug] QUERY OK source="settings" db=0.1ms idle=14.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:11:16.369 [debug] QUERY OK source="settings" db=0.0ms idle=14.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:11:16.370 [debug] Running yt-dlp command for action: get_downloadable_status 07:11:16.370 [debug] QUERY OK source="settings" db=0.0ms idle=14.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:11:16.370 [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 [] 07:11:16.371 [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 [] 07:11:16.371 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6-Qcvt_UjFo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f8/89/f88979bee58c2b13f9414e2dbc843e5381dc8c8d418e89c6189acef8aacbbed1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 07:11:19.384 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6-Qcvt_UjFo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f8/89/f88979bee58c2b13f9414e2dbc843e5381dc8c8d418e89c6189acef8aacbbed1.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: [youtube] 6-Qcvt_UjFo: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 6-Qcvt_UjFo: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 07:11:19.384 [debug] Running yt-dlp command for action: download 07:11:19.385 [debug] QUERY OK source="settings" db=0.3ms idle=1850.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:11:19.385 [debug] QUERY OK source="settings" db=0.2ms idle=1851.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:11:19.385 [debug] QUERY OK source="settings" db=0.2ms idle=1851.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:11:19.386 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6-Qcvt_UjFo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/8a/82/8a82121eb1239ee71c1bc62c4b8bbd52abe23f2c3e316fb202d443c53e70af70.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 07:11:22.952 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6-Qcvt_UjFo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/8a/82/8a82121eb1239ee71c1bc62c4b8bbd52abe23f2c3e316fb202d443c53e70af70.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 WARNING: [youtube] 6-Qcvt_UjFo: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 6-Qcvt_UjFo: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 07:11:22.952 [error] yt-dlp download error for media item #24342: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] 6-Qcvt_UjFo: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] 6-Qcvt_UjFo: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 07:11:22.953 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":24342},"id":7387,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6598721,"event":"job:exception","queue_time":821901,"attempt":15,"tags":["media_item","media_fetching","show_in_dashboard"]} 07:11:45.385 [info] {"source":"oban","duration":1010,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:12:00.437 [info] {"source":"oban","duration":546,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:12:15.388 [info] {"source":"oban","duration":1698,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:12:45.391 [info] {"source":"oban","duration":1675,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:13:00.439 [info] {"source":"oban","duration":309,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:13:15.394 [info] {"source":"oban","duration":1262,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:13:45.396 [info] {"source":"oban","duration":1246,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:14:00.441 [info] {"source":"oban","duration":480,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:14:15.399 [info] {"source":"oban","duration":2082,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:14:45.401 [info] {"source":"oban","duration":1438,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:15:00.443 [info] {"source":"oban","duration":557,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:15:15.403 [info] {"source":"oban","duration":1172,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:15:45.404 [info] {"source":"oban","duration":678,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:16:00.444 [info] {"source":"oban","duration":534,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:16:15.406 [info] {"source":"oban","duration":1086,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:16:45.408 [info] {"source":"oban","duration":1563,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:17:00.447 [info] {"source":"oban","duration":437,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:17:15.410 [info] {"source":"oban","duration":1063,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:17:45.412 [info] {"source":"oban","duration":1198,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:17:53.275 [info] GET / 07:17:53.275 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 07:17:53.276 [debug] QUERY OK source="settings" db=0.1ms idle=736.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:17:53.276 [debug] QUERY OK source="media_profiles" db=0.1ms idle=737.3ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 07:17:53.276 [debug] QUERY OK source="sources" db=0.1ms idle=737.5ms SELECT count(s0."id") FROM "sources" AS s0 [] 07:17:53.291 [debug] QUERY OK source="media_items" db=14.9ms idle=737.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 07:17:53.294 [debug] QUERY OK source="media_items" db=2.3ms idle=150.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 07:17:53.294 [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 [] 07:17:53.295 [debug] QUERY OK source="settings" db=0.1ms idle=18.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:17:53.295 [debug] QUERY OK source="settings" db=0.1ms idle=19.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:17:53.296 [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"] 07:17:53.298 [debug] QUERY OK source="media_items" db=0.6ms 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 (m0."media_filepath" IS NULL)) [] 07:17:53.298 [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] 07:17:53.299 [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 (?,?,?,?)) [4, 3, 2, 7] 07:17:53.310 [debug] QUERY OK source="media_items" db=10.1ms idle=4.0ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:17:53.311 [debug] QUERY OK source="media_items" db=0.5ms idle=13.4ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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:17:53.311 [debug] QUERY OK source="sources" db=0.1ms idle=13.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 07:17:53.312 [info] Sent 200 in 37ms 07:18:00.449 [info] {"source":"oban","duration":743,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:18:15.414 [info] {"source":"oban","duration":1001,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:18:45.417 [info] {"source":"oban","duration":1994,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:19:00.450 [info] {"source":"oban","duration":454,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:19:15.419 [info] {"source":"oban","duration":1333,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:19:45.421 [info] {"source":"oban","duration":1077,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:20:00.451 [info] {"source":"oban","duration":227,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:20:15.424 [info] {"source":"oban","duration":1507,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:20:45.426 [info] {"source":"oban","duration":1215,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:21:00.453 [info] {"source":"oban","duration":540,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:21:15.429 [info] {"source":"oban","duration":1052,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:21:45.431 [info] {"source":"oban","duration":866,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:22:00.454 [info] {"source":"oban","duration":410,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:22:15.433 [info] {"source":"oban","duration":837,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:22:45.436 [info] {"source":"oban","duration":1623,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:23:00.457 [info] {"source":"oban","duration":561,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:23:15.437 [info] {"source":"oban","duration":1274,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:23:45.439 [info] {"source":"oban","duration":1424,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:24:00.459 [info] {"source":"oban","duration":902,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:24:15.441 [info] {"source":"oban","duration":1042,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:24:45.443 [info] {"source":"oban","duration":1237,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:25:00.461 [info] {"source":"oban","duration":942,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:25:15.446 [info] {"source":"oban","duration":1741,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:25:45.447 [info] {"source":"oban","duration":1516,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:26:00.463 [info] {"source":"oban","duration":671,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:26:15.449 [info] {"source":"oban","duration":1084,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:26:45.451 [info] {"source":"oban","duration":1285,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:27:00.464 [info] {"source":"oban","duration":653,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:27:15.453 [info] {"source":"oban","duration":955,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:27:45.456 [info] {"source":"oban","duration":1770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:28:00.466 [info] {"source":"oban","duration":484,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:28:15.458 [info] {"source":"oban","duration":1124,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:28:45.460 [info] {"source":"oban","duration":783,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:29:00.468 [info] {"source":"oban","duration":770,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:29:15.462 [info] {"source":"oban","duration":1650,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:29:45.464 [info] {"source":"oban","duration":792,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:30:00.470 [info] {"source":"oban","duration":420,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:30:15.466 [info] {"source":"oban","duration":1080,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:30:45.468 [info] {"source":"oban","duration":948,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:31:00.472 [info] {"source":"oban","duration":656,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:31:15.470 [info] {"source":"oban","duration":1310,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:31:45.473 [info] {"source":"oban","duration":1857,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:32:00.474 [info] {"source":"oban","duration":465,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:32:15.475 [info] {"source":"oban","duration":1110,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:32:45.477 [info] {"source":"oban","duration":1030,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:33:00.476 [info] {"source":"oban","duration":885,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:33:15.479 [info] {"source":"oban","duration":878,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:33:45.481 [info] {"source":"oban","duration":1026,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:34:00.478 [info] {"source":"oban","duration":1413,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:34:15.483 [info] {"source":"oban","duration":1428,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:34:45.485 [info] {"source":"oban","duration":1164,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:35:00.479 [info] {"source":"oban","duration":289,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:35:15.487 [info] {"source":"oban","duration":1087,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:35:45.489 [info] {"source":"oban","duration":1048,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:36:00.481 [info] {"source":"oban","duration":365,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:36:15.490 [info] {"source":"oban","duration":637,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:36:45.492 [info] {"source":"oban","duration":1149,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:37:00.483 [info] {"source":"oban","duration":451,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:37:15.494 [info] {"source":"oban","duration":815,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:37:45.496 [info] {"source":"oban","duration":1182,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:38:00.484 [info] {"source":"oban","duration":319,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:38:15.499 [info] {"source":"oban","duration":1885,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:38:45.501 [info] {"source":"oban","duration":1612,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:39:00.485 [info] {"source":"oban","duration":625,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:39:15.503 [info] {"source":"oban","duration":1579,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:39:45.505 [info] {"source":"oban","duration":1147,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:40:00.486 [info] {"source":"oban","duration":319,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:40:15.507 [info] {"source":"oban","duration":834,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:40:45.509 [info] {"source":"oban","duration":1679,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:41:00.488 [info] {"source":"oban","duration":912,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:41:15.511 [info] {"source":"oban","duration":1190,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:41:45.514 [info] {"source":"oban","duration":1940,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:42:00.489 [info] {"source":"oban","duration":276,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:42:15.516 [info] {"source":"oban","duration":1435,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:42:45.519 [info] {"source":"oban","duration":1590,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:43:00.491 [info] {"source":"oban","duration":729,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:43:15.520 [info] {"source":"oban","duration":1265,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:43:45.522 [info] {"source":"oban","duration":1112,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:44:00.492 [info] {"source":"oban","duration":468,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:44:15.524 [info] {"source":"oban","duration":1259,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:44:45.527 [info] {"source":"oban","duration":1770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":1} 07:45:00.493 [info] {"source":"oban","duration":222,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:45:15.529 [info] {"source":"oban","duration":1323,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:45:45.531 [info] {"source":"oban","duration":1244,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:46:00.495 [info] {"source":"oban","duration":890,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:46:15.533 [info] {"source":"oban","duration":1239,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:46:45.536 [info] {"source":"oban","duration":1821,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:47:00.497 [info] {"source":"oban","duration":355,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:47:15.539 [info] {"source":"oban","duration":1418,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:47:45.540 [info] {"source":"oban","duration":1173,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:48:00.499 [info] {"source":"oban","duration":553,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:48:15.542 [info] {"source":"oban","duration":796,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:48:45.544 [info] {"source":"oban","duration":1644,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:49:00.500 [info] {"source":"oban","duration":317,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:49:15.547 [info] {"source":"oban","duration":2017,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:49:45.549 [info] {"source":"oban","duration":1172,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:50:00.501 [info] {"source":"oban","duration":534,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:50:15.551 [info] {"source":"oban","duration":1065,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:50:45.553 [info] {"source":"oban","duration":1516,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:51:00.503 [info] {"source":"oban","duration":424,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:51:15.555 [info] {"source":"oban","duration":1491,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:51:45.558 [info] {"source":"oban","duration":1790,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:52:00.504 [info] {"source":"oban","duration":544,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:52:15.560 [info] {"source":"oban","duration":1246,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:52:45.562 [info] {"source":"oban","duration":907,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:53:00.507 [info] {"source":"oban","duration":1135,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:53:15.564 [info] {"source":"oban","duration":1262,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:53:45.565 [info] {"source":"oban","duration":638,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:54:00.508 [info] {"source":"oban","duration":364,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:54:15.567 [info] {"source":"oban","duration":1363,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:54:45.569 [info] {"source":"oban","duration":897,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:55:00.510 [info] {"source":"oban","duration":682,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:55:15.571 [info] {"source":"oban","duration":1470,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:55:17.722 [info] {"args":{"id":6},"id":7353,"meta":{},"system_time":1766476517722504333,"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"]} 07:55:17.723 [debug] QUERY OK source="sources" db=0.2ms idle=183.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 07:55:17.724 [debug] QUERY OK source="settings" db=1.2ms idle=183.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:55:17.725 [debug] QUERY OK source="media_items" db=0.9ms idle=185.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] 07:55:17.726 [debug] QUERY OK source="media_items" db=0.2ms idle=10.4ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [6] 07:55:17.726 [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] 07:55:17.727 [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 [] 07:55:17.727 [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 [] 07:55:17.729 [debug] QUERY OK source="media_items" db=1.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 WHERE (m0."source_id" = ?) ORDER BY m0."uploaded_at" DESC LIMIT 50 OFFSET 20 [6] 07:55:17.730 [debug] Running yt-dlp command for action: get_media_attributes_for_collection 07:55:17.731 [debug] Current batch of media processed. Will check again in 1000ms 07:55:17.731 [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 [] 07:55:17.731 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=4.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:55:17.731 [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:55:17.732 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@dematronsewingautomtion --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/DEMA SEWING MACHINE AUTOMATION/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/cb/bb/cbbbcc974e9f3661efc4cd3485278afda55223492a780f9d109c1b8e5de04c05.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/c2/47/c247d0521734b7c28c306a603943c688c59bef8d1c80c4e65e85ffeaa4713cc5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 07:55:18.732 [debug] Current batch of media processed. Will check again in 1000ms 07:55:19.733 [debug] Current batch of media processed. Will check again in 1000ms 07:55:20.734 [debug] Current batch of media processed. Will check again in 1000ms 07:55:21.736 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "https://www.demasewingautomation.com/product/juki-dln-9010a-sh \n\n\nUSED JUKI DLN-9010A Needle Feed Sewing Machine - Precision Meets Power\n\nExperience industrial-grade performance with the JUKI DLN-9010A, a high-speed needle feed sewing machine built for accuracy and durability. Designed for heavy-duty fabrics, its direct-drive motor ensures ultra-smooth operation, minimal vibration, and exceptional stitch quality. With advanced features like automatic thread trimming, needle-feed mechanism for slip-free stitching, and a semi-dry lubrication system, the DLN-9010A boosts productivity while keeping maintenance low. Perfect for denim, canvas, and layered materials, it’s the professional’s choice for reliable, high-speed sewing.\n\nMain Features of the JUKI DLN-9010-7 Needle Feed Sewing Machine\n\nDirect-Drive Motor: Energy-efficient servo motor is built into the machine head for quick startup, low vibration, and reduced power consumption.\n\nNeedle Feed Mechanism: Synchronizes needle and feed dog movement to prevent material slippage—ideal for matching stripes, plaids, and stretchy or layered fabrics.\n\nSemi-Dry Lubrication System: No oil pan required; minimal lubrication protects your fabric and workspace from stains.\n\nAutomatic Functions:\n\nThread trimming\n\nReverse stitching (back-tack)\n\nPresser foot lifting\n\nAuto thread wiping\n\nIntegrated Control Panel: Easy operation with digital settings for speed, trimming, and stitching patterns (CP-18A or CP-180A options).\n\nSilent and Smooth Operation: Ideal for clean, quiet factory or studio environments.\n\nMicro-Lifter Function: Reduces fabric damage when sewing delicate or stretchy materials.\n\nHigh-Speed Performance: Up to 5,000 stitches per minute, enhancing productivity on long runs.\n\nBuilt-In Bobbin Winder: Convenient and time-saving bobbin winding without removing fabric.\n\nSafety Features:\n\nAuto stop when head is tilted\n\nOverload protection\n\nAdjustable Stitch Length: Fine-tune stitching for different materials and designs (up to 5mm).\n\nHeavy-Duty Ready: Handles medium to heavy-weight materials with ease.\n\nCALL TODAY TO PLACE YOUR ORDER 1-888-492-5553", "duration" => 78, "filename" => "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-12 Juki industrial sewing machine liquidation/Juki industrial sewing machine liquidation [DudEuV07qcI].mp4", "id" => "DudEuV07qcI", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=DudEuV07qcI", "playlist_index" => 1, "timestamp" => 1752349723, "title" => "Juki industrial sewing machine liquidation", "upload_date" => "20250712"} 07:55:21.736 [debug] QUERY OK source="sources" db=0.2ms idle=197.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 07:55:21.737 [debug] QUERY OK source="sources" db=0.1ms idle=197.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] 07:55:21.738 [debug] QUERY OK source="media_items" db=1.1ms idle=197.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-12 19:48:43Z], 6] 07:55:21.740 [debug] QUERY OK source="media_items" db=1.4ms idle=199.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["https://www.demasewingautomation.com/product/juki-dln-9010a-sh \n\n\nUSED JUKI DLN-9010A Needle Feed Sewing Machine - Precision Meets Power\n\nExperience industrial-grade performance with the JUKI DLN-9010A, a high-speed needle feed sewing machine built for accuracy and durability. Designed for heavy-duty fabrics, its direct-drive motor ensures ultra-smooth operation, minimal vibration, and exceptional stitch quality. With advanced features like automatic thread trimming, needle-feed mechanism for slip-free stitching, and a semi-dry lubrication system, the DLN-9010A boosts productivity while keeping maintenance low. Perfect for denim, canvas, and layered materials, it’s the professional’s choice for reliable, high-speed sewing.\n\nMain Features of the JUKI DLN-9010-7 Needle Feed Sewing Machine\n\nDirect-Drive Motor: Energy-efficient servo motor is built into the machine head for quick startup, low vibration, and reduced power consumption.\n\nNeedle Feed Mechanism: Synchronizes needle and feed dog movement to prevent material slippage—ideal for matching stripes, plaids, and stretchy or layered fabrics.\n\nSemi-Dry Lubrication System: No oil pan required; minimal lubrication protects your fabric and workspace from stains.\n\nAutomatic Functions:\n\nThread trimming\n\nReverse stitching (back-tack)\n\nPresser foot lifting\n\nAuto thread wiping\n\nIntegrated Control Panel: Easy operation with digital settings for speed, trimming, and stitching patterns (CP-18A or CP-180A options).\n\nSilent and Smooth Operation: Ideal for clean, quiet factory or studio environments.\n\nMicro-Lifter Function: Reduces fabric damage when sewing delicate or stretchy materials.\n\nHigh-Speed Performance: Up to 5,000 stitches per minute, enhancing productivity on long runs.\n\nBuilt-In Bobbin Winder: Convenient and time-saving bobbin winding without removing fabric.\n\nSafety Features:\n\nAuto stop when head is tilted\n\nOverload protection\n\nAdjustable Stitch Length: Fine-tune stitching for different materials and designs (up to 5mm).\n\nHeavy-Duty Ready: Handles medium to heavy-weight materials with ease.\n\nCALL TODAY TO PLACE YOUR ORDER 1-888-492-5553", "Juki industrial sewing machine liquidation", "02793183-2678-49a2-9baf-fdec6bde841c", "https://www.youtube.com/watch?v=DudEuV07qcI", "DudEuV07qcI", false, 78, false, 1, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-12 Juki industrial sewing machine liquidation/Juki industrial sewing machine liquidation [DudEuV07qcI].mp4", false, false, 6, [], 94, ~U[2025-07-12 19:48:43Z], ~U[2025-12-23 07:55:21Z], ~U[2025-12-23 07:55:21Z], "https://www.demasewingautomation.com/product/juki-dln-9010a-sh \n\n\nUSED JUKI DLN-9010A Needle Feed Sewing Machine - Precision Meets Power\n\nExperience industrial-grade performance with the JUKI DLN-9010A, a high-speed needle feed sewing machine built for accuracy and durability. Designed for heavy-duty fabrics, its direct-drive motor ensures ultra-smooth operation, minimal vibration, and exceptional stitch quality. With advanced features like automatic thread trimming, needle-feed mechanism for slip-free stitching, and a semi-dry lubrication system, the DLN-9010A boosts productivity while keeping maintenance low. Perfect for denim, canvas, and layered materials, it’s the professional’s choice for reliable, high-speed sewing.\n\nMain Features of the JUKI DLN-9010-7 Needle Feed Sewing Machine\n\nDirect-Drive Motor: Energy-efficient servo motor is built into the machine head for quick startup, low vibration, and reduced power consumption.\n\nNeedle Feed Mechanism: Synchronizes needle and feed dog movement to prevent material slippage—ideal for matching stripes, plaids, and stretchy or layered fabrics.\n\nSemi-Dry Lubrication System: No oil pan required; minimal lubrication protects your fabric and workspace from stains.\n\nAutomatic Functions:\n\nThread trimming\n\nReverse stitching (back-tack)\n\nPresser foot lifting\n\nAuto thread wiping\n\nIntegrated Control Panel: Easy operation with digital settings for speed, trimming, and stitching patterns (CP-18A or CP-180A options).\n\nSilent and Smooth Operation: Ideal for clean, quiet factory or studio environments.\n\nMicro-Lifter Function: Reduces fabric damage when sewing delicate or stretchy materials.\n\nHigh-Speed Performance: Up to 5,000 stitches per minute, enhancing productivity on long runs.\n\nBuilt-In Bobbin Winder: Convenient and time-saving bobbin winding without removing fabric.\n\nSafety Features:\n\nAuto stop when head is tilted\n\nOverload protection\n\nAdjustable Stitch Length: Fine-tune stitching for different materials and designs (up to 5mm).\n\nHeavy-Duty Ready: Handles medium to heavy-weight materials with ease.\n\nCALL TODAY TO PLACE YOUR ORDER 1-888-492-5553", "Juki industrial sewing machine liquidation", "https://www.youtube.com/watch?v=DudEuV07qcI", "DudEuV07qcI", 78, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-12 Juki industrial sewing machine liquidation/Juki industrial sewing machine liquidation [DudEuV07qcI].mp4", false, 6, ~U[2025-07-12 19:48:43Z]] 07:55:21.741 [debug] QUERY OK source="sources" db=0.3ms idle=16.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 07:55:21.741 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 07:55:21.742 [debug] QUERY OK source="media_items" db=0.2ms 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 [1333] 07:55:21.742 [debug] Current batch of media processed. Will check again in 1000ms 07:55:22.743 [debug] Current batch of media processed. Will check again in 1000ms 07:55:23.745 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "USED JUKI OVERLOCK MO-6716S 5 THREAD OVERLOCK SEWING MACHINE Click link below 👇\n\nhttps://www.demasewingautomation.com/product/juki-mo-6716s-used-\n\n\nThe Juki MO-6716S is an exceptional industrial overlock sewing machine featuring a 3-needle, 5-thread setup. Manufactured by Juki, a renowned leader in sewing technology and quality, this machine is specifically designed for overlock stitching on light to medium weight fabrics. It operates at high speeds while maintaining impressive reliability and consistency. Thanks to its differential feed mechanism, the MO-6716S is adaptable for various fabric types, accommodating both rigid and elastic materials.\n \n This pre-owned Juki MO-6716S serger sewing machine is available as part of a liquidation sale. It will be sold in sewing-ready condition, but keep in mind that it is an \"as is\" transaction. The offer includes a stand-up style table, a positioning servo motor, and a light, all at a fantastic price. If you have any inquiries or require additional information, please don't hesitate to reach out!\n\nTHIS MACHINE IS USED AND HAS COSMETIC FAULTS SO PLEASE CONSIDER BEFORE BUYING\n\nCLICK HERE IF YOU'RE INTRESTED IN A NEW JUKI MO-6816S\n\nNEW STAND AND TABLE IS AN OPTION AT THE COST OF $250.00", "duration" => 245, "filename" => "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-09 Juki MO-6716 Overlock ⧸ Serger Used/Juki MO-6716 Overlock ⧸ Serger Used [WWhLi4qPE-Q].mp4", "id" => "WWhLi4qPE-Q", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=WWhLi4qPE-Q", "playlist_index" => 2, "timestamp" => 1752102237, "title" => "Juki MO-6716 Overlock / Serger Used", "upload_date" => "20250709"} 07:55:23.746 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=206.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 07:55:23.746 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=206.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 07:55:23.747 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=207.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-09 23:03:57Z], 6] 07:55:23.749 [debug] QUERY OK source="media_items" db=0.9ms idle=208.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["USED JUKI OVERLOCK MO-6716S 5 THREAD OVERLOCK SEWING MACHINE Click link below 👇\n\nhttps://www.demasewingautomation.com/product/juki-mo-6716s-used-\n\n\nThe Juki MO-6716S is an exceptional industrial overlock sewing machine featuring a 3-needle, 5-thread setup. Manufactured by Juki, a renowned leader in sewing technology and quality, this machine is specifically designed for overlock stitching on light to medium weight fabrics. It operates at high speeds while maintaining impressive reliability and consistency. Thanks to its differential feed mechanism, the MO-6716S is adaptable for various fabric types, accommodating both rigid and elastic materials.\n \n This pre-owned Juki MO-6716S serger sewing machine is available as part of a liquidation sale. It will be sold in sewing-ready condition, but keep in mind that it is an \"as is\" transaction. The offer includes a stand-up style table, a positioning servo motor, and a light, all at a fantastic price. If you have any inquiries or require additional information, please don't hesitate to reach out!\n\nTHIS MACHINE IS USED AND HAS COSMETIC FAULTS SO PLEASE CONSIDER BEFORE BUYING\n\nCLICK HERE IF YOU'RE INTRESTED IN A NEW JUKI MO-6816S\n\nNEW STAND AND TABLE IS AN OPTION AT THE COST OF $250.00", "Juki MO-6716 Overlock / Serger Used", "24543e3c-9672-416e-a9c4-c2d04eea3f8c", "https://www.youtube.com/watch?v=WWhLi4qPE-Q", "WWhLi4qPE-Q", false, 245, false, 2, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-09 Juki MO-6716 Overlock ⧸ Serger Used/Juki MO-6716 Overlock ⧸ Serger Used [WWhLi4qPE-Q].mp4", false, false, 6, [], 98, ~U[2025-07-09 23:03:57Z], ~U[2025-12-23 07:55:23Z], ~U[2025-12-23 07:55:23Z], "USED JUKI OVERLOCK MO-6716S 5 THREAD OVERLOCK SEWING MACHINE Click link below 👇\n\nhttps://www.demasewingautomation.com/product/juki-mo-6716s-used-\n\n\nThe Juki MO-6716S is an exceptional industrial overlock sewing machine featuring a 3-needle, 5-thread setup. Manufactured by Juki, a renowned leader in sewing technology and quality, this machine is specifically designed for overlock stitching on light to medium weight fabrics. It operates at high speeds while maintaining impressive reliability and consistency. Thanks to its differential feed mechanism, the MO-6716S is adaptable for various fabric types, accommodating both rigid and elastic materials.\n \n This pre-owned Juki MO-6716S serger sewing machine is available as part of a liquidation sale. It will be sold in sewing-ready condition, but keep in mind that it is an \"as is\" transaction. The offer includes a stand-up style table, a positioning servo motor, and a light, all at a fantastic price. If you have any inquiries or require additional information, please don't hesitate to reach out!\n\nTHIS MACHINE IS USED AND HAS COSMETIC FAULTS SO PLEASE CONSIDER BEFORE BUYING\n\nCLICK HERE IF YOU'RE INTRESTED IN A NEW JUKI MO-6816S\n\nNEW STAND AND TABLE IS AN OPTION AT THE COST OF $250.00", "Juki MO-6716 Overlock / Serger Used", "https://www.youtube.com/watch?v=WWhLi4qPE-Q", "WWhLi4qPE-Q", 245, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-09 Juki MO-6716 Overlock ⧸ Serger Used/Juki MO-6716 Overlock ⧸ Serger Used [WWhLi4qPE-Q].mp4", false, 6, ~U[2025-07-09 23:03:57Z]] 07:55:23.749 [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" = ?) [6] 07:55:23.750 [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] 07:55:23.750 [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 [1335] 07:55:23.750 [debug] Current batch of media processed. Will check again in 1000ms 07:55:24.751 [debug] Current batch of media processed. Will check again in 1000ms 07:55:25.752 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "https://www.demasewingautomation.com/product/used-juki-ddl8700\n\nWe are liquidating multiple units of the Juki DDL-8700 Preowned sewing machine in good sewing condition. To order please call 1-888-492-5553", "duration" => 88, "filename" => "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-08 Juki Sewing Machine liquidation DDL-8700/Juki Sewing Machine liquidation DDL-8700 [89Znm_wfud0].mp4", "id" => "89Znm_wfud0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=89Znm_wfud0", "playlist_index" => 3, "timestamp" => 1752009355, "title" => "Juki Sewing Machine liquidation DDL-8700", "upload_date" => "20250708"} 07:55:25.753 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=213.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] 07:55:25.753 [debug] QUERY OK source="sources" db=0.1ms idle=214.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] 07:55:25.755 [debug] QUERY OK source="media_items" db=1.1ms idle=214.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-08 21:15:55Z], 6] 07:55:25.756 [debug] QUERY OK source="media_items" db=0.8ms idle=216.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["https://www.demasewingautomation.com/product/used-juki-ddl8700\n\nWe are liquidating multiple units of the Juki DDL-8700 Preowned sewing machine in good sewing condition. To order please call 1-888-492-5553", "Juki Sewing Machine liquidation DDL-8700", "1a677aa4-8aa0-4eee-a8c2-97751893818d", "https://www.youtube.com/watch?v=89Znm_wfud0", "89Znm_wfud0", false, 88, false, 3, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-08 Juki Sewing Machine liquidation DDL-8700/Juki Sewing Machine liquidation DDL-8700 [89Znm_wfud0].mp4", false, false, 6, [], 97, ~U[2025-07-08 21:15:55Z], ~U[2025-12-23 07:55:25Z], ~U[2025-12-23 07:55:25Z], "https://www.demasewingautomation.com/product/used-juki-ddl8700\n\nWe are liquidating multiple units of the Juki DDL-8700 Preowned sewing machine in good sewing condition. To order please call 1-888-492-5553", "Juki Sewing Machine liquidation DDL-8700", "https://www.youtube.com/watch?v=89Znm_wfud0", "89Znm_wfud0", 88, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-08 Juki Sewing Machine liquidation DDL-8700/Juki Sewing Machine liquidation DDL-8700 [89Znm_wfud0].mp4", false, 6, ~U[2025-07-08 21:15:55Z]] 07:55:25.757 [debug] QUERY OK source="sources" db=0.2ms idle=25.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 07:55:25.757 [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] 07:55:25.758 [debug] QUERY OK source="media_items" db=0.2ms 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 [1338] 07:55:25.758 [debug] Current batch of media processed. Will check again in 1000ms 07:55:26.760 [debug] Current batch of media processed. Will check again in 1000ms 07:55:27.761 [debug] Current batch of media processed. Will check again in 1000ms 07:55:28.763 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Automatic Fabric Spreading", "duration" => 111, "filename" => "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-08 Automatic Fabric Spreading/Automatic Fabric Spreading [vlLn43zyqnE].mp4", "id" => "vlLn43zyqnE", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=vlLn43zyqnE", "playlist_index" => 4, "timestamp" => 1751936874, "title" => "Automatic Fabric Spreading", "upload_date" => "20250708"} 07:55:28.763 [debug] QUERY OK source="sources" db=0.2ms idle=1223.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 07:55:28.764 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=1224.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 07:55:28.765 [debug] QUERY OK source="media_items" db=1.0ms idle=1224.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-08 01:07:54Z], 6] 07:55:28.766 [debug] QUERY OK source="media_items" db=0.6ms idle=1029.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Automatic Fabric Spreading", "Automatic Fabric Spreading", "1548554b-0f6d-4eba-b681-ba9d11f95954", "https://www.youtube.com/watch?v=vlLn43zyqnE", "vlLn43zyqnE", false, 111, false, 4, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-08 Automatic Fabric Spreading/Automatic Fabric Spreading [vlLn43zyqnE].mp4", false, false, 6, [], 97, ~U[2025-07-08 01:07:54Z], ~U[2025-12-23 07:55:28Z], ~U[2025-12-23 07:55:28Z], "Automatic Fabric Spreading", "Automatic Fabric Spreading", "https://www.youtube.com/watch?v=vlLn43zyqnE", "vlLn43zyqnE", 111, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-08 Automatic Fabric Spreading/Automatic Fabric Spreading [vlLn43zyqnE].mp4", false, 6, ~U[2025-07-08 01:07:54Z]] 07:55:28.766 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=28.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 07:55:28.767 [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] 07:55:28.767 [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 [1339] 07:55:28.767 [debug] Current batch of media processed. Will check again in 1000ms 07:55:29.768 [debug] Current batch of media processed. Will check again in 1000ms 07:55:30.770 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "https://www.demasewingautomation.com/", "duration" => 54, "filename" => "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-07 Cut & Sew Industrial Equipment Supplier DEMATRON/Cut & Sew Industrial Equipment Supplier DEMATRON [UKGB5_GRak4].mp4", "id" => "UKGB5_GRak4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=UKGB5_GRak4", "playlist_index" => 5, "timestamp" => 1751926561, "title" => "Cut & Sew Industrial Equipment Supplier DEMATRON", "upload_date" => "20250707"} 07:55:30.770 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=230.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 07:55:30.771 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=231.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] 07:55:30.772 [debug] QUERY OK source="media_items" db=0.9ms idle=232.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-07 22:16:01Z], 6] 07:55:30.773 [debug] QUERY OK source="media_items" db=0.5ms idle=233.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["https://www.demasewingautomation.com/", "Cut & Sew Industrial Equipment Supplier DEMATRON", "580a778f-93ec-4096-8bd8-4b4080a08ecd", "https://www.youtube.com/watch?v=UKGB5_GRak4", "UKGB5_GRak4", false, 54, false, 5, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-07 Cut & Sew Industrial Equipment Supplier DEMATRON/Cut & Sew Industrial Equipment Supplier DEMATRON [UKGB5_GRak4].mp4", false, false, 6, [], 98, ~U[2025-07-07 22:16:01Z], ~U[2025-12-23 07:55:30Z], ~U[2025-12-23 07:55:30Z], "https://www.demasewingautomation.com/", "Cut & Sew Industrial Equipment Supplier DEMATRON", "https://www.youtube.com/watch?v=UKGB5_GRak4", "UKGB5_GRak4", 54, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-07 Cut & Sew Industrial Equipment Supplier DEMATRON/Cut & Sew Industrial Equipment Supplier DEMATRON [UKGB5_GRak4].mp4", false, 6, ~U[2025-07-07 22:16:01Z]] 07:55:30.773 [debug] QUERY OK source="sources" db=0.1ms idle=30.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 07:55:30.774 [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] 07:55:30.774 [debug] QUERY OK source="media_items" db=0.2ms idle=3.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [1341] 07:55:30.774 [debug] Current batch of media processed. Will check again in 1000ms 07:55:31.775 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Click below 👇\n\nhttps://www.demasewingautomation.com/products/industrial-sewing-machine/industrial-sewing-machine/programmable-sewing-machine", "duration" => 44, "filename" => "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-06 Rope Sewing/Rope Sewing [05Qdmq5SvIQ].mp4", "id" => "05Qdmq5SvIQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=05Qdmq5SvIQ", "playlist_index" => 6, "timestamp" => 1751766470, "title" => "Rope Sewing", "upload_date" => "20250706"} 07:55:31.776 [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] 07:55:31.777 [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] 07:55:31.778 [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[2025-07-06 01:47:50Z], 6] 07:55:31.779 [debug] QUERY OK source="media_items" db=0.5ms idle=1003.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Click below 👇\n\nhttps://www.demasewingautomation.com/products/industrial-sewing-machine/industrial-sewing-machine/programmable-sewing-machine", "Rope Sewing", "c2d6cd7f-61bf-43f0-ba34-67ec646a3a0a", "https://www.youtube.com/watch?v=05Qdmq5SvIQ", "05Qdmq5SvIQ", false, 44, false, 6, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-06 Rope Sewing/Rope Sewing [05Qdmq5SvIQ].mp4", false, false, 6, [], 97, ~U[2025-07-06 01:47:50Z], ~U[2025-12-23 07:55:31Z], ~U[2025-12-23 07:55:31Z], "Click below 👇\n\nhttps://www.demasewingautomation.com/products/industrial-sewing-machine/industrial-sewing-machine/programmable-sewing-machine", "Rope Sewing", "https://www.youtube.com/watch?v=05Qdmq5SvIQ", "05Qdmq5SvIQ", 44, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-06 Rope Sewing/Rope Sewing [05Qdmq5SvIQ].mp4", false, 6, ~U[2025-07-06 01:47:50Z]] 07:55:31.779 [debug] QUERY OK source="sources" db=0.2ms idle=34.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] 07:55:31.779 [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] 07:55:31.780 [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 [1343] 07:55:31.780 [debug] Current batch of media processed. Will check again in 1000ms 07:55:32.781 [debug] Current batch of media processed. Will check again in 1000ms 07:55:33.783 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Click Link below 👇\n\nhttps://www.demasewingautomation.com/product/upholstery-sewing-machine\n\nFor more information on how to use this machine and details on how it works please call 1-888-492-5553. \n\nOver 30,000 industrial sewing machines available through our global network, we are the one stop supplier of sewing machines and automated sewing solutions to factories, contractors, and dealers worldwide.\n \nOnly the top quality brands\n JUKI, BROTHER\nYAMATO \nMitsubishi \nPegasus \nREECE \nWILCOX & \nGIBBS \n-offered direct to manufacturers at wholesale prices. \n\nChoose DEMA - where product availability and a low price are always guaranteed!", "duration" => 16, "filename" => "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-06 Auto Upholstery Stitching Pattern sewer DM-1280/Auto Upholstery Stitching Pattern sewer DM-1280 [hZ57f5mMMPM].mp4", "id" => "hZ57f5mMMPM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=hZ57f5mMMPM", "playlist_index" => 7, "timestamp" => 1751765671, "title" => "Auto Upholstery Stitching Pattern sewer DM-1280", "upload_date" => "20250706"} 07:55:33.783 [debug] QUERY OK source="sources" db=0.3ms idle=244.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 07:55:33.784 [debug] QUERY OK source="sources" db=0.3ms idle=244.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 07:55:33.785 [debug] QUERY OK source="media_items" db=1.0ms idle=245.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-06 01:34:31Z], 6] 07:55:33.787 [debug] QUERY OK source="media_items" db=0.9ms idle=246.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Click Link below 👇\n\nhttps://www.demasewingautomation.com/product/upholstery-sewing-machine\n\nFor more information on how to use this machine and details on how it works please call 1-888-492-5553. \n\nOver 30,000 industrial sewing machines available through our global network, we are the one stop supplier of sewing machines and automated sewing solutions to factories, contractors, and dealers worldwide.\n \nOnly the top quality brands\n JUKI, BROTHER\nYAMATO \nMitsubishi \nPegasus \nREECE \nWILCOX & \nGIBBS \n-offered direct to manufacturers at wholesale prices. \n\nChoose DEMA - where product availability and a low price are always guaranteed!", "Auto Upholstery Stitching Pattern sewer DM-1280", "a9a76e7d-3789-4eaa-8f11-37121a771946", "https://www.youtube.com/watch?v=hZ57f5mMMPM", "hZ57f5mMMPM", false, 16, false, 7, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-06 Auto Upholstery Stitching Pattern sewer DM-1280/Auto Upholstery Stitching Pattern sewer DM-1280 [hZ57f5mMMPM].mp4", false, false, 6, [], 97, ~U[2025-07-06 01:34:31Z], ~U[2025-12-23 07:55:33Z], ~U[2025-12-23 07:55:33Z], "Click Link below 👇\n\nhttps://www.demasewingautomation.com/product/upholstery-sewing-machine\n\nFor more information on how to use this machine and details on how it works please call 1-888-492-5553. \n\nOver 30,000 industrial sewing machines available through our global network, we are the one stop supplier of sewing machines and automated sewing solutions to factories, contractors, and dealers worldwide.\n \nOnly the top quality brands\n JUKI, BROTHER\nYAMATO \nMitsubishi \nPegasus \nREECE \nWILCOX & \nGIBBS \n-offered direct to manufacturers at wholesale prices. \n\nChoose DEMA - where product availability and a low price are always guaranteed!", "Auto Upholstery Stitching Pattern sewer DM-1280", "https://www.youtube.com/watch?v=hZ57f5mMMPM", "hZ57f5mMMPM", 16, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-06 Auto Upholstery Stitching Pattern sewer DM-1280/Auto Upholstery Stitching Pattern sewer DM-1280 [hZ57f5mMMPM].mp4", false, 6, ~U[2025-07-06 01:34:31Z]] 07:55:33.787 [debug] QUERY OK source="sources" db=0.3ms idle=38.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] 07:55:33.788 [debug] QUERY OK source="media_profiles" db=0.3ms 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] 07:55:33.788 [debug] QUERY OK source="media_items" db=0.4ms 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 [1344] 07:55:33.788 [debug] Current batch of media processed. Will check again in 1000ms 07:55:34.789 [debug] Current batch of media processed. Will check again in 1000ms 07:55:35.790 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "DEMATRON 867 Click here 👉 https://www.facebook.com/share/v/14KyTNLe87r/?mibextid=wwXIfr", "duration" => 57, "filename" => "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-04 Walking foot for upholstery DEMATRON 867/Walking foot for upholstery DEMATRON 867 [85MHBZ6fWI4].mp4", "id" => "85MHBZ6fWI4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=85MHBZ6fWI4", "playlist_index" => 8, "timestamp" => 1751633713, "title" => "Walking foot for upholstery DEMATRON 867", "upload_date" => "20250704"} 07:55:35.791 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=251.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 07:55:35.792 [debug] QUERY OK source="sources" db=0.1ms idle=252.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 07:55:35.793 [debug] QUERY OK source="media_items" db=0.9ms idle=253.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-04 12:55:13Z], 6] 07:55:35.794 [debug] QUERY OK source="media_items" db=0.6ms idle=254.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["DEMATRON 867 Click here 👉 https://www.facebook.com/share/v/14KyTNLe87r/?mibextid=wwXIfr", "Walking foot for upholstery DEMATRON 867", "dcc4befe-1902-400b-abae-68eca06b33b3", "https://www.youtube.com/watch?v=85MHBZ6fWI4", "85MHBZ6fWI4", false, 57, false, 8, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-04 Walking foot for upholstery DEMATRON 867/Walking foot for upholstery DEMATRON 867 [85MHBZ6fWI4].mp4", false, false, 6, [], 98, ~U[2025-07-04 12:55:13Z], ~U[2025-12-23 07:55:35Z], ~U[2025-12-23 07:55:35Z], "DEMATRON 867 Click here 👉 https://www.facebook.com/share/v/14KyTNLe87r/?mibextid=wwXIfr", "Walking foot for upholstery DEMATRON 867", "https://www.youtube.com/watch?v=85MHBZ6fWI4", "85MHBZ6fWI4", 57, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-04 Walking foot for upholstery DEMATRON 867/Walking foot for upholstery DEMATRON 867 [85MHBZ6fWI4].mp4", false, 6, ~U[2025-07-04 12:55:13Z]] 07:55:35.794 [debug] QUERY OK source="sources" db=0.1ms idle=40.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 07:55:35.795 [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] 07:55:35.796 [debug] QUERY OK source="media_items" db=0.2ms 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 [1346] 07:55:35.796 [debug] Current batch of media processed. Will check again in 1000ms 07:55:36.797 [debug] Current batch of media processed. Will check again in 1000ms 07:55:37.179 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@dematronsewingautomtion --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/DEMA SEWING MACHINE AUTOMATION/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/cb/bb/cbbbcc974e9f3661efc4cd3485278afda55223492a780f9d109c1b8e5de04c05.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/c2/47/c247d0521734b7c28c306a603943c688c59bef8d1c80c4e65e85ffeaa4713cc5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 101 with: 07:55:37.180 [debug] Gracefully stopping file follower 07:55:37.180 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1385.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 07:55:37.181 [debug] QUERY OK source="sources" db=0.1ms idle=1386.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 07:55:37.182 [debug] QUERY OK source="media_items" db=1.2ms queue=0.1ms idle=1386.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-12 19:48:43Z], 6] 07:55:37.184 [debug] QUERY OK source="media_items" db=1.2ms idle=1387.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["https://www.demasewingautomation.com/product/juki-dln-9010a-sh \n\n\nUSED JUKI DLN-9010A Needle Feed Sewing Machine - Precision Meets Power\n\nExperience industrial-grade performance with the JUKI DLN-9010A, a high-speed needle feed sewing machine built for accuracy and durability. Designed for heavy-duty fabrics, its direct-drive motor ensures ultra-smooth operation, minimal vibration, and exceptional stitch quality. With advanced features like automatic thread trimming, needle-feed mechanism for slip-free stitching, and a semi-dry lubrication system, the DLN-9010A boosts productivity while keeping maintenance low. Perfect for denim, canvas, and layered materials, it’s the professional’s choice for reliable, high-speed sewing.\n\nMain Features of the JUKI DLN-9010-7 Needle Feed Sewing Machine\n\nDirect-Drive Motor: Energy-efficient servo motor is built into the machine head for quick startup, low vibration, and reduced power consumption.\n\nNeedle Feed Mechanism: Synchronizes needle and feed dog movement to prevent material slippage—ideal for matching stripes, plaids, and stretchy or layered fabrics.\n\nSemi-Dry Lubrication System: No oil pan required; minimal lubrication protects your fabric and workspace from stains.\n\nAutomatic Functions:\n\nThread trimming\n\nReverse stitching (back-tack)\n\nPresser foot lifting\n\nAuto thread wiping\n\nIntegrated Control Panel: Easy operation with digital settings for speed, trimming, and stitching patterns (CP-18A or CP-180A options).\n\nSilent and Smooth Operation: Ideal for clean, quiet factory or studio environments.\n\nMicro-Lifter Function: Reduces fabric damage when sewing delicate or stretchy materials.\n\nHigh-Speed Performance: Up to 5,000 stitches per minute, enhancing productivity on long runs.\n\nBuilt-In Bobbin Winder: Convenient and time-saving bobbin winding without removing fabric.\n\nSafety Features:\n\nAuto stop when head is tilted\n\nOverload protection\n\nAdjustable Stitch Length: Fine-tune stitching for different materials and designs (up to 5mm).\n\nHeavy-Duty Ready: Handles medium to heavy-weight materials with ease.\n\nCALL TODAY TO PLACE YOUR ORDER 1-888-492-5553", "Juki industrial sewing machine liquidation", "08ecc51f-ff08-439c-8289-dfde18a74b65", "https://www.youtube.com/watch?v=DudEuV07qcI", "DudEuV07qcI", false, 78, false, 1, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-12 Juki industrial sewing machine liquidation/Juki industrial sewing machine liquidation [DudEuV07qcI].mp4", false, false, 6, [], 94, ~U[2025-07-12 19:48:43Z], ~U[2025-12-23 07:55:37Z], ~U[2025-12-23 07:55:37Z], "https://www.demasewingautomation.com/product/juki-dln-9010a-sh \n\n\nUSED JUKI DLN-9010A Needle Feed Sewing Machine - Precision Meets Power\n\nExperience industrial-grade performance with the JUKI DLN-9010A, a high-speed needle feed sewing machine built for accuracy and durability. Designed for heavy-duty fabrics, its direct-drive motor ensures ultra-smooth operation, minimal vibration, and exceptional stitch quality. With advanced features like automatic thread trimming, needle-feed mechanism for slip-free stitching, and a semi-dry lubrication system, the DLN-9010A boosts productivity while keeping maintenance low. Perfect for denim, canvas, and layered materials, it’s the professional’s choice for reliable, high-speed sewing.\n\nMain Features of the JUKI DLN-9010-7 Needle Feed Sewing Machine\n\nDirect-Drive Motor: Energy-efficient servo motor is built into the machine head for quick startup, low vibration, and reduced power consumption.\n\nNeedle Feed Mechanism: Synchronizes needle and feed dog movement to prevent material slippage—ideal for matching stripes, plaids, and stretchy or layered fabrics.\n\nSemi-Dry Lubrication System: No oil pan required; minimal lubrication protects your fabric and workspace from stains.\n\nAutomatic Functions:\n\nThread trimming\n\nReverse stitching (back-tack)\n\nPresser foot lifting\n\nAuto thread wiping\n\nIntegrated Control Panel: Easy operation with digital settings for speed, trimming, and stitching patterns (CP-18A or CP-180A options).\n\nSilent and Smooth Operation: Ideal for clean, quiet factory or studio environments.\n\nMicro-Lifter Function: Reduces fabric damage when sewing delicate or stretchy materials.\n\nHigh-Speed Performance: Up to 5,000 stitches per minute, enhancing productivity on long runs.\n\nBuilt-In Bobbin Winder: Convenient and time-saving bobbin winding without removing fabric.\n\nSafety Features:\n\nAuto stop when head is tilted\n\nOverload protection\n\nAdjustable Stitch Length: Fine-tune stitching for different materials and designs (up to 5mm).\n\nHeavy-Duty Ready: Handles medium to heavy-weight materials with ease.\n\nCALL TODAY TO PLACE YOUR ORDER 1-888-492-5553", "Juki industrial sewing machine liquidation", "https://www.youtube.com/watch?v=DudEuV07qcI", "DudEuV07qcI", 78, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-12 Juki industrial sewing machine liquidation/Juki industrial sewing machine liquidation [DudEuV07qcI].mp4", false, 6, ~U[2025-07-12 19:48:43Z]] 07:55:37.184 [debug] QUERY OK source="sources" db=0.1ms idle=429.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 07:55:37.185 [debug] QUERY OK source="media_items" db=0.8ms 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[2025-07-09 23:03:57Z], 6] 07:55:37.187 [debug] QUERY OK source="media_items" db=0.9ms idle=4.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["USED JUKI OVERLOCK MO-6716S 5 THREAD OVERLOCK SEWING MACHINE Click link below 👇\n\nhttps://www.demasewingautomation.com/product/juki-mo-6716s-used-\n\n\nThe Juki MO-6716S is an exceptional industrial overlock sewing machine featuring a 3-needle, 5-thread setup. Manufactured by Juki, a renowned leader in sewing technology and quality, this machine is specifically designed for overlock stitching on light to medium weight fabrics. It operates at high speeds while maintaining impressive reliability and consistency. Thanks to its differential feed mechanism, the MO-6716S is adaptable for various fabric types, accommodating both rigid and elastic materials.\n \n This pre-owned Juki MO-6716S serger sewing machine is available as part of a liquidation sale. It will be sold in sewing-ready condition, but keep in mind that it is an \"as is\" transaction. The offer includes a stand-up style table, a positioning servo motor, and a light, all at a fantastic price. If you have any inquiries or require additional information, please don't hesitate to reach out!\n\nTHIS MACHINE IS USED AND HAS COSMETIC FAULTS SO PLEASE CONSIDER BEFORE BUYING\n\nCLICK HERE IF YOU'RE INTRESTED IN A NEW JUKI MO-6816S\n\nNEW STAND AND TABLE IS AN OPTION AT THE COST OF $250.00", "Juki MO-6716 Overlock / Serger Used", "6e043979-152b-4ff8-a47a-e1cff04f7f59", "https://www.youtube.com/watch?v=WWhLi4qPE-Q", "WWhLi4qPE-Q", false, 245, false, 2, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-09 Juki MO-6716 Overlock ⧸ Serger Used/Juki MO-6716 Overlock ⧸ Serger Used [WWhLi4qPE-Q].mp4", false, false, 6, [], 98, ~U[2025-07-09 23:03:57Z], ~U[2025-12-23 07:55:37Z], ~U[2025-12-23 07:55:37Z], "USED JUKI OVERLOCK MO-6716S 5 THREAD OVERLOCK SEWING MACHINE Click link below 👇\n\nhttps://www.demasewingautomation.com/product/juki-mo-6716s-used-\n\n\nThe Juki MO-6716S is an exceptional industrial overlock sewing machine featuring a 3-needle, 5-thread setup. Manufactured by Juki, a renowned leader in sewing technology and quality, this machine is specifically designed for overlock stitching on light to medium weight fabrics. It operates at high speeds while maintaining impressive reliability and consistency. Thanks to its differential feed mechanism, the MO-6716S is adaptable for various fabric types, accommodating both rigid and elastic materials.\n \n This pre-owned Juki MO-6716S serger sewing machine is available as part of a liquidation sale. It will be sold in sewing-ready condition, but keep in mind that it is an \"as is\" transaction. The offer includes a stand-up style table, a positioning servo motor, and a light, all at a fantastic price. If you have any inquiries or require additional information, please don't hesitate to reach out!\n\nTHIS MACHINE IS USED AND HAS COSMETIC FAULTS SO PLEASE CONSIDER BEFORE BUYING\n\nCLICK HERE IF YOU'RE INTRESTED IN A NEW JUKI MO-6816S\n\nNEW STAND AND TABLE IS AN OPTION AT THE COST OF $250.00", "Juki MO-6716 Overlock / Serger Used", "https://www.youtube.com/watch?v=WWhLi4qPE-Q", "WWhLi4qPE-Q", 245, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-09 Juki MO-6716 Overlock ⧸ Serger Used/Juki MO-6716 Overlock ⧸ Serger Used [WWhLi4qPE-Q].mp4", false, 6, ~U[2025-07-09 23:03:57Z]] 07:55:37.187 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 07:55:37.188 [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[2025-07-08 21:15:55Z], 6] 07:55:37.189 [debug] QUERY OK source="media_items" db=0.5ms idle=3.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["https://www.demasewingautomation.com/product/used-juki-ddl8700\n\nWe are liquidating multiple units of the Juki DDL-8700 Preowned sewing machine in good sewing condition. To order please call 1-888-492-5553", "Juki Sewing Machine liquidation DDL-8700", "a00e3049-58c4-4390-9483-023b320b4ab0", "https://www.youtube.com/watch?v=89Znm_wfud0", "89Znm_wfud0", false, 88, false, 3, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-08 Juki Sewing Machine liquidation DDL-8700/Juki Sewing Machine liquidation DDL-8700 [89Znm_wfud0].mp4", false, false, 6, [], 97, ~U[2025-07-08 21:15:55Z], ~U[2025-12-23 07:55:37Z], ~U[2025-12-23 07:55:37Z], "https://www.demasewingautomation.com/product/used-juki-ddl8700\n\nWe are liquidating multiple units of the Juki DDL-8700 Preowned sewing machine in good sewing condition. To order please call 1-888-492-5553", "Juki Sewing Machine liquidation DDL-8700", "https://www.youtube.com/watch?v=89Znm_wfud0", "89Znm_wfud0", 88, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-08 Juki Sewing Machine liquidation DDL-8700/Juki Sewing Machine liquidation DDL-8700 [89Znm_wfud0].mp4", false, 6, ~U[2025-07-08 21:15:55Z]] 07:55:37.190 [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" = ?) [6] 07:55:37.190 [debug] QUERY OK source="media_items" db=0.7ms 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[2025-07-08 01:07:54Z], 6] 07:55:37.191 [debug] QUERY OK source="media_items" db=0.4ms idle=3.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Automatic Fabric Spreading", "Automatic Fabric Spreading", "305fe0e0-ec74-46b4-9a5b-ba15a849bc9e", "https://www.youtube.com/watch?v=vlLn43zyqnE", "vlLn43zyqnE", false, 111, false, 4, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-08 Automatic Fabric Spreading/Automatic Fabric Spreading [vlLn43zyqnE].mp4", false, false, 6, [], 97, ~U[2025-07-08 01:07:54Z], ~U[2025-12-23 07:55:37Z], ~U[2025-12-23 07:55:37Z], "Automatic Fabric Spreading", "Automatic Fabric Spreading", "https://www.youtube.com/watch?v=vlLn43zyqnE", "vlLn43zyqnE", 111, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-08 Automatic Fabric Spreading/Automatic Fabric Spreading [vlLn43zyqnE].mp4", false, 6, ~U[2025-07-08 01:07:54Z]] 07:55:37.191 [debug] QUERY OK source="sources" db=0.2ms idle=3.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 07:55:37.192 [debug] QUERY OK source="media_items" db=0.8ms 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[2025-07-07 22:16:01Z], 6] 07:55:37.193 [debug] QUERY OK source="media_items" db=0.5ms idle=3.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["https://www.demasewingautomation.com/", "Cut & Sew Industrial Equipment Supplier DEMATRON", "022da7b2-c7b0-4a48-89bd-1ce5525aaad1", "https://www.youtube.com/watch?v=UKGB5_GRak4", "UKGB5_GRak4", false, 54, false, 5, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-07 Cut & Sew Industrial Equipment Supplier DEMATRON/Cut & Sew Industrial Equipment Supplier DEMATRON [UKGB5_GRak4].mp4", false, false, 6, [], 98, ~U[2025-07-07 22:16:01Z], ~U[2025-12-23 07:55:37Z], ~U[2025-12-23 07:55:37Z], "https://www.demasewingautomation.com/", "Cut & Sew Industrial Equipment Supplier DEMATRON", "https://www.youtube.com/watch?v=UKGB5_GRak4", "UKGB5_GRak4", 54, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-07 Cut & Sew Industrial Equipment Supplier DEMATRON/Cut & Sew Industrial Equipment Supplier DEMATRON [UKGB5_GRak4].mp4", false, 6, ~U[2025-07-07 22:16:01Z]] 07:55:37.194 [debug] QUERY OK source="sources" db=0.3ms idle=3.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 07:55:37.195 [debug] QUERY OK source="media_items" db=0.7ms 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[2025-07-06 01:47:50Z], 6] 07:55:37.196 [debug] QUERY OK source="media_items" db=1.4ms idle=3.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Click below 👇\n\nhttps://www.demasewingautomation.com/products/industrial-sewing-machine/industrial-sewing-machine/programmable-sewing-machine", "Rope Sewing", "9697e0d5-ea7e-4293-bc20-129fe58c4b1a", "https://www.youtube.com/watch?v=05Qdmq5SvIQ", "05Qdmq5SvIQ", false, 44, false, 6, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-06 Rope Sewing/Rope Sewing [05Qdmq5SvIQ].mp4", false, false, 6, [], 97, ~U[2025-07-06 01:47:50Z], ~U[2025-12-23 07:55:37Z], ~U[2025-12-23 07:55:37Z], "Click below 👇\n\nhttps://www.demasewingautomation.com/products/industrial-sewing-machine/industrial-sewing-machine/programmable-sewing-machine", "Rope Sewing", "https://www.youtube.com/watch?v=05Qdmq5SvIQ", "05Qdmq5SvIQ", 44, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-06 Rope Sewing/Rope Sewing [05Qdmq5SvIQ].mp4", false, 6, ~U[2025-07-06 01:47:50Z]] 07:55:37.197 [debug] QUERY OK source="sources" db=0.2ms 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] 07:55:37.198 [debug] QUERY OK source="media_items" db=0.7ms 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[2025-07-06 01:34:31Z], 6] 07:55:37.199 [debug] QUERY OK source="media_items" db=0.7ms idle=4.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Click Link below 👇\n\nhttps://www.demasewingautomation.com/product/upholstery-sewing-machine\n\nFor more information on how to use this machine and details on how it works please call 1-888-492-5553. \n\nOver 30,000 industrial sewing machines available through our global network, we are the one stop supplier of sewing machines and automated sewing solutions to factories, contractors, and dealers worldwide.\n \nOnly the top quality brands\n JUKI, BROTHER\nYAMATO \nMitsubishi \nPegasus \nREECE \nWILCOX & \nGIBBS \n-offered direct to manufacturers at wholesale prices. \n\nChoose DEMA - where product availability and a low price are always guaranteed!", "Auto Upholstery Stitching Pattern sewer DM-1280", "191f42e3-4697-47b4-8a16-90f533a05006", "https://www.youtube.com/watch?v=hZ57f5mMMPM", "hZ57f5mMMPM", false, 16, false, 7, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-06 Auto Upholstery Stitching Pattern sewer DM-1280/Auto Upholstery Stitching Pattern sewer DM-1280 [hZ57f5mMMPM].mp4", false, false, 6, [], 97, ~U[2025-07-06 01:34:31Z], ~U[2025-12-23 07:55:37Z], ~U[2025-12-23 07:55:37Z], "Click Link below 👇\n\nhttps://www.demasewingautomation.com/product/upholstery-sewing-machine\n\nFor more information on how to use this machine and details on how it works please call 1-888-492-5553. \n\nOver 30,000 industrial sewing machines available through our global network, we are the one stop supplier of sewing machines and automated sewing solutions to factories, contractors, and dealers worldwide.\n \nOnly the top quality brands\n JUKI, BROTHER\nYAMATO \nMitsubishi \nPegasus \nREECE \nWILCOX & \nGIBBS \n-offered direct to manufacturers at wholesale prices. \n\nChoose DEMA - where product availability and a low price are always guaranteed!", "Auto Upholstery Stitching Pattern sewer DM-1280", "https://www.youtube.com/watch?v=hZ57f5mMMPM", "hZ57f5mMMPM", 16, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-06 Auto Upholstery Stitching Pattern sewer DM-1280/Auto Upholstery Stitching Pattern sewer DM-1280 [hZ57f5mMMPM].mp4", false, 6, ~U[2025-07-06 01:34:31Z]] 07:55:37.200 [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" = ?) [6] 07:55:37.201 [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[2025-07-04 12:55:13Z], 6] 07:55:37.201 [debug] QUERY OK source="media_items" db=0.5ms idle=3.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["DEMATRON 867 Click here 👉 https://www.facebook.com/share/v/14KyTNLe87r/?mibextid=wwXIfr", "Walking foot for upholstery DEMATRON 867", "ea19fe6b-b10e-427c-bd35-105af4f4c40a", "https://www.youtube.com/watch?v=85MHBZ6fWI4", "85MHBZ6fWI4", false, 57, false, 8, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-04 Walking foot for upholstery DEMATRON 867/Walking foot for upholstery DEMATRON 867 [85MHBZ6fWI4].mp4", false, false, 6, [], 98, ~U[2025-07-04 12:55:13Z], ~U[2025-12-23 07:55:37Z], ~U[2025-12-23 07:55:37Z], "DEMATRON 867 Click here 👉 https://www.facebook.com/share/v/14KyTNLe87r/?mibextid=wwXIfr", "Walking foot for upholstery DEMATRON 867", "https://www.youtube.com/watch?v=85MHBZ6fWI4", "85MHBZ6fWI4", 57, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-04 Walking foot for upholstery DEMATRON 867/Walking foot for upholstery DEMATRON 867 [85MHBZ6fWI4].mp4", false, 6, ~U[2025-07-04 12:55:13Z]] 07:55:37.202 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 07:55:37.203 [debug] QUERY OK source="media_items" db=0.6ms 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[2025-06-20 15:05:57Z], 6] 07:55:37.204 [debug] QUERY OK source="media_items" db=0.5ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["DEMATRON Automated sewing station:\n\nCall for more information 1-888-492-5553", "Automated Overlock / Serger Industrial Sewing", "10eeefe9-3144-493b-b366-be4285f004d2", "https://www.youtube.com/watch?v=DNEmgtJJ7cw", "DNEmgtJJ7cw", false, 52, false, 9, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-06-20 Automated Overlock ⧸ Serger Industrial Sewing/Automated Overlock ⧸ Serger Industrial Sewing [DNEmgtJJ7cw].mp4", false, false, 6, [], 98, ~U[2025-06-20 15:05:57Z], ~U[2025-12-23 07:55:37Z], ~U[2025-12-23 07:55:37Z], "DEMATRON Automated sewing station:\n\nCall for more information 1-888-492-5553", "Automated Overlock / Serger Industrial Sewing", "https://www.youtube.com/watch?v=DNEmgtJJ7cw", "DNEmgtJJ7cw", 52, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-06-20 Automated Overlock ⧸ Serger Industrial Sewing/Automated Overlock ⧸ Serger Industrial Sewing [DNEmgtJJ7cw].mp4", false, 6, ~U[2025-06-20 15:05:57Z]] 07:55:37.204 [debug] QUERY OK source="sources" db=0.2ms idle=3.1ms UPDATE "sources" SET "last_indexed_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2025-12-23 07:55:37Z], ~U[2025-12-23 07:55:37Z], 6] 07:55:37.205 [debug] QUERY OK source="media_items" db=0.6ms 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")))) [6] 07:55:37.206 [debug] QUERY OK source="media_items" db=0.6ms 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")))) [6] 07:55:37.206 [debug] QUERY OK source="media_items" db=0.3ms idle=3.4ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [6] 07:55:37.208 [debug] QUERY OK source="tasks" db=0.2ms idle=2.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [7402, 6, ~U[2025-12-23 07:55:37Z], ~U[2025-12-23 07:55:37Z]] 07:55:37.208 [info] {"args":{"id":6},"id":7353,"meta":{},"state":"success","max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","duration":19485926,"event":"job:stop","queue_time":637379,"attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 07:55:45.573 [info] {"source":"oban","duration":1646,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:56:00.512 [info] {"source":"oban","duration":503,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:56:15.575 [info] {"source":"oban","duration":1488,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:56:45.577 [info] {"source":"oban","duration":1232,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:57:00.513 [info] {"source":"oban","duration":358,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:57:15.579 [info] {"source":"oban","duration":997,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:57:45.581 [info] {"source":"oban","duration":1014,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:58:00.515 [info] {"source":"oban","duration":601,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:58:15.583 [info] {"source":"oban","duration":1137,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:58:45.585 [info] {"source":"oban","duration":760,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:59:00.516 [info] {"source":"oban","duration":283,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:59:15.587 [info] {"source":"oban","duration":1261,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:59:45.589 [info] {"source":"oban","duration":1576,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:00:00.517 [info] {"source":"oban","duration":329,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:00:15.592 [info] {"source":"oban","duration":1762,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:00:45.594 [info] {"source":"oban","duration":1432,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:01:00.519 [info] {"source":"oban","duration":823,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:01:15.596 [info] {"source":"oban","duration":1051,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:01:45.598 [info] {"source":"oban","duration":1248,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:02:00.520 [info] {"source":"oban","duration":424,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:02:15.600 [info] {"source":"oban","duration":1437,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:02:45.602 [info] {"source":"oban","duration":1392,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:03:00.522 [info] {"source":"oban","duration":271,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:03:15.604 [info] {"source":"oban","duration":941,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:03:45.606 [info] {"source":"oban","duration":1087,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:04:00.524 [info] {"source":"oban","duration":489,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:04:15.609 [info] {"source":"oban","duration":1797,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":1} 08:04:45.611 [info] {"source":"oban","duration":1213,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:05:00.526 [info] {"source":"oban","duration":501,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:05:15.613 [info] {"source":"oban","duration":1590,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:05:45.615 [info] {"source":"oban","duration":1562,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:06:00.527 [info] {"source":"oban","duration":377,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:06:15.617 [info] {"source":"oban","duration":1474,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:06:45.619 [info] {"source":"oban","duration":931,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:07:00.528 [info] {"source":"oban","duration":292,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:07:15.621 [info] {"source":"oban","duration":1517,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:07:45.623 [info] {"source":"oban","duration":924,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:08:00.529 [info] {"source":"oban","duration":355,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:08:15.625 [info] {"source":"oban","duration":1082,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:08:45.627 [info] {"source":"oban","duration":1307,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":1} 08:09:00.530 [info] {"source":"oban","duration":254,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:09:15.629 [info] {"source":"oban","duration":857,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:09:45.631 [info] {"source":"oban","duration":1271,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:10:00.531 [info] {"source":"oban","duration":389,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:10:15.633 [info] {"source":"oban","duration":781,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:10:45.635 [info] {"source":"oban","duration":1012,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:11:00.532 [info] {"source":"oban","duration":557,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:11:15.637 [info] {"source":"oban","duration":830,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:11:45.639 [info] {"source":"oban","duration":1172,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:12:00.535 [info] {"source":"oban","duration":664,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:12:15.641 [info] {"source":"oban","duration":1060,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:12:45.644 [info] {"source":"oban","duration":1739,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:13:00.536 [info] {"source":"oban","duration":501,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:13:15.646 [info] {"source":"oban","duration":1594,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:13:45.649 [info] {"source":"oban","duration":2052,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:14:00.539 [info] {"source":"oban","duration":507,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:14:15.651 [info] {"source":"oban","duration":864,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:14:45.653 [info] {"source":"oban","duration":1054,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:15:00.540 [info] {"source":"oban","duration":295,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:15:15.655 [info] {"source":"oban","duration":1390,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:15:45.658 [info] {"source":"oban","duration":1663,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:16:00.541 [info] {"source":"oban","duration":490,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:16:15.660 [info] {"source":"oban","duration":1282,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:16:45.662 [info] {"source":"oban","duration":1158,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:17:00.542 [info] {"source":"oban","duration":336,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:17:15.664 [info] {"source":"oban","duration":1498,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:17:45.666 [info] {"source":"oban","duration":1350,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:18:00.543 [info] {"source":"oban","duration":473,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:18:15.668 [info] {"source":"oban","duration":759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:18:45.670 [info] {"source":"oban","duration":850,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:19:00.545 [info] {"source":"oban","duration":750,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:19:15.672 [info] {"source":"oban","duration":958,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:19:45.675 [info] {"source":"oban","duration":2317,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:20:00.546 [info] {"source":"oban","duration":521,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:20:15.677 [info] {"source":"oban","duration":812,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:20:45.679 [info] {"source":"oban","duration":1362,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:21:00.548 [info] {"source":"oban","duration":529,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:21:15.682 [info] {"source":"oban","duration":1649,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:21:45.683 [info] {"source":"oban","duration":748,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:22:00.550 [info] {"source":"oban","duration":446,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:22:15.686 [info] {"source":"oban","duration":1084,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:22:45.687 [info] {"source":"oban","duration":1105,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:23:00.551 [info] {"source":"oban","duration":229,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:23:15.689 [info] {"source":"oban","duration":749,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:23:45.691 [info] {"source":"oban","duration":1610,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:24:00.553 [info] {"source":"oban","duration":793,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:24:15.693 [info] {"source":"oban","duration":1401,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:24:45.695 [info] {"source":"oban","duration":1086,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:25:00.554 [info] {"source":"oban","duration":382,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:25:15.697 [info] {"source":"oban","duration":1441,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:25:45.699 [info] {"source":"oban","duration":1555,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:26:00.556 [info] {"source":"oban","duration":759,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:26:15.701 [info] {"source":"oban","duration":1184,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:26:37.523 [info] {"args":{"id":3},"id":7354,"meta":{},"system_time":1766478397523658105,"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"]} 08:26:37.524 [debug] QUERY OK source="sources" db=0.3ms idle=1864.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] 08:26:37.524 [debug] QUERY OK source="settings" db=0.2ms idle=1864.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:26:37.525 [debug] QUERY OK source="media_items" db=0.7ms idle=1010.4ms 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] 08:26:37.526 [debug] QUERY OK source="media_items" db=0.2ms idle=8.6ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [3] 08:26:37.526 [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] 08:26:37.526 [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 [] 08:26:37.527 [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 [] 08:26:37.537 [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 WHERE (m0."source_id" = ?) ORDER BY m0."uploaded_at" DESC LIMIT 50 OFFSET 20 [3] 08:26:37.558 [debug] Running yt-dlp command for action: get_media_attributes_for_collection 08:26:37.559 [debug] Current batch of media processed. Will check again in 1000ms 08:26:37.559 [debug] QUERY OK source="settings" db=0.3ms queue=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 [] 08:26:37.559 [debug] QUERY OK source="settings" db=0.1ms 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 [] 08:26:37.560 [debug] QUERY OK source="settings" db=0.1ms 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 [] 08:26:37.562 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@Factory_Monster --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/Factory_Monster/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/4b/7e/4b7e8e174950f6802cb483169918c9d910f599256778374174c97703482bae6c.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/fa/15/fa15f71c2f1491f1a014941a0f9068595ce713fbc061cdfa91e948a40eea040e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 08:26:38.560 [debug] Current batch of media processed. Will check again in 1000ms 08:26:39.561 [debug] Current batch of media processed. Will check again in 1000ms 08:26:40.562 [debug] Current batch of media processed. Will check again in 1000ms 08:26:41.564 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Handcrafted Sheepskin Jacket by a Master Artisan With 50 Years of Legacy\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://smartstore.naver.com/northbeach1987 (North Beach)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 759, "filename" => "/downloads/Factory_Monster/2025-12-17 Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy/Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy [knlnR0qsLHc].mkv", "id" => "knlnR0qsLHc", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=knlnR0qsLHc", "playlist_index" => 1, "timestamp" => 1765971053, "title" => "Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy", "upload_date" => "20251217"} 08:26:41.564 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=904.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 (?)) [3] 08:26:41.565 [debug] QUERY OK source="sources" db=0.2ms queue=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" = ?) [3] 08:26:41.566 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=905.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-17 11:30:53Z], 3] 08:26:41.567 [debug] QUERY OK source="media_items" db=0.7ms idle=906.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Handcrafted Sheepskin Jacket by a Master Artisan With 50 Years of Legacy\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://smartstore.naver.com/northbeach1987 (North Beach)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy", "ecd092b7-617d-4113-942f-7a5bea7a6686", "https://www.youtube.com/watch?v=knlnR0qsLHc", "knlnR0qsLHc", false, 759, false, 1, "/downloads/Factory_Monster/2025-12-17 Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy/Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy [knlnR0qsLHc].mkv", false, false, 3, [], 98, ~U[2025-12-17 11:30:53Z], ~U[2025-12-23 08:26:41Z], ~U[2025-12-23 08:26:41Z], "Handcrafted Sheepskin Jacket by a Master Artisan With 50 Years of Legacy\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://smartstore.naver.com/northbeach1987 (North Beach)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy", "https://www.youtube.com/watch?v=knlnR0qsLHc", "knlnR0qsLHc", 759, false, "/downloads/Factory_Monster/2025-12-17 Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy/Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy [knlnR0qsLHc].mkv", false, 3, ~U[2025-12-17 11:30:53Z]] 08:26:41.568 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=41.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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:26:41.568 [debug] QUERY OK source="media_profiles" db=0.2ms queue=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] 08:26:41.569 [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 [27576] 08:26:41.569 [debug] Current batch of media processed. Will check again in 1000ms 08:26:42.570 [debug] Current batch of media processed. Will check again in 1000ms 08:26:43.571 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "The Incredible Process of Weaving Shading Nets in a Korean Factory\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/4frTRXq (가야테크)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 651, "filename" => "/downloads/Factory_Monster/2025-12-12 The Incredible Process of Weaving Shading Nets in a Korean Factory/The Incredible Process of Weaving Shading Nets in a Korean Factory [ObPvvMs2bkI].mkv", "id" => "ObPvvMs2bkI", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=ObPvvMs2bkI", "playlist_index" => 2, "timestamp" => 1765532703, "title" => "The Incredible Process of Weaving Shading Nets in a Korean Factory", "upload_date" => "20251212"} 08:26:43.572 [debug] QUERY OK source="sources" db=0.2ms idle=912.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] 08:26:43.572 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=912.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] 08:26:43.573 [debug] QUERY OK source="media_items" db=0.7ms idle=913.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-12 09:45:03Z], 3] 08:26:43.576 [debug] QUERY OK source="media_items" db=2.8ms idle=914.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Incredible Process of Weaving Shading Nets in a Korean Factory\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/4frTRXq (가야테크)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "The Incredible Process of Weaving Shading Nets in a Korean Factory", "f6954d75-1e8a-4d94-931b-1b48e51528c4", "https://www.youtube.com/watch?v=ObPvvMs2bkI", "ObPvvMs2bkI", false, 651, false, 2, "/downloads/Factory_Monster/2025-12-12 The Incredible Process of Weaving Shading Nets in a Korean Factory/The Incredible Process of Weaving Shading Nets in a Korean Factory [ObPvvMs2bkI].mkv", false, false, 3, [], 98, ~U[2025-12-12 09:45:03Z], ~U[2025-12-23 08:26:43Z], ~U[2025-12-23 08:26:43Z], "The Incredible Process of Weaving Shading Nets in a Korean Factory\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/4frTRXq (가야테크)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "The Incredible Process of Weaving Shading Nets in a Korean Factory", "https://www.youtube.com/watch?v=ObPvvMs2bkI", "ObPvvMs2bkI", 651, false, "/downloads/Factory_Monster/2025-12-12 The Incredible Process of Weaving Shading Nets in a Korean Factory/The Incredible Process of Weaving Shading Nets in a Korean Factory [ObPvvMs2bkI].mkv", false, 3, ~U[2025-12-12 09:45:03Z]] 08:26:43.577 [debug] QUERY OK source="sources" db=0.1ms idle=47.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] 08:26:43.577 [debug] QUERY OK source="media_profiles" db=0.1ms queue=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] 08:26:43.578 [debug] QUERY OK source="media_items" db=0.2ms idle=5.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 [26192] 08:26:43.578 [debug] Current batch of media processed. Will check again in 1000ms 08:26:44.579 [debug] Current batch of media processed. Will check again in 1000ms 08:26:45.580 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Kitchen Faucet Mass Production in Korea\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/4gjiMO3\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 702, "filename" => "/downloads/Factory_Monster/2025-12-06 Kitchen Faucet Mass Production in Korea/Kitchen Faucet Mass Production in Korea [KR7UmQUMpyY].mkv", "id" => "KR7UmQUMpyY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=KR7UmQUMpyY", "playlist_index" => 3, "timestamp" => 1765013412, "title" => "Kitchen Faucet Mass Production in Korea", "upload_date" => "20251206"} 08:26:45.581 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=921.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 (?)) [3] 08:26:45.582 [debug] QUERY OK source="sources" db=0.2ms idle=922.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:26:45.582 [debug] QUERY OK source="media_items" db=0.6ms idle=922.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-06 09:30:12Z], 3] 08:26:45.583 [debug] QUERY OK source="media_items" db=0.6ms idle=923.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Kitchen Faucet Mass Production in Korea\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/4gjiMO3\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Kitchen Faucet Mass Production in Korea", "dc48cd9f-15aa-4864-a4ba-9d38c9861c8a", "https://www.youtube.com/watch?v=KR7UmQUMpyY", "KR7UmQUMpyY", false, 702, false, 3, "/downloads/Factory_Monster/2025-12-06 Kitchen Faucet Mass Production in Korea/Kitchen Faucet Mass Production in Korea [KR7UmQUMpyY].mkv", false, false, 3, [], 98, ~U[2025-12-06 09:30:12Z], ~U[2025-12-23 08:26:45Z], ~U[2025-12-23 08:26:45Z], "Kitchen Faucet Mass Production in Korea\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/4gjiMO3\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Kitchen Faucet Mass Production in Korea", "https://www.youtube.com/watch?v=KR7UmQUMpyY", "KR7UmQUMpyY", 702, false, "/downloads/Factory_Monster/2025-12-06 Kitchen Faucet Mass Production in Korea/Kitchen Faucet Mass Production in Korea [KR7UmQUMpyY].mkv", false, 3, ~U[2025-12-06 09:30:12Z]] 08:26:45.584 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=51.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 08:26:45.585 [debug] QUERY OK source="media_profiles" db=0.2ms queue=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] 08:26:45.585 [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 [23589] 08:26:45.585 [debug] Current batch of media processed. Will check again in 1000ms 08:26:45.703 [info] {"source":"oban","duration":1160,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:26:46.586 [debug] Current batch of media processed. Will check again in 1000ms 08:26:47.588 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed\n\n*This video does not contain any paid promotion*\n\n00:00 Motor Production\n08:22 Fastener Production\n18:44 Fence Production\n28:27 Aluminum Profile Production\n\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 2263, "filename" => "/downloads/Factory_Monster/2025-12-02 【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed/【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed [TiuOtBGzrK4].mkv", "id" => "TiuOtBGzrK4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=TiuOtBGzrK4", "playlist_index" => 4, "timestamp" => 1764676857, "title" => "【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed", "upload_date" => "20251202"} 08:26:47.588 [debug] QUERY OK source="sources" db=0.2ms idle=1053.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:26:47.589 [debug] QUERY OK source="sources" db=0.2ms idle=929.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] 08:26:47.590 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=929.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-02 12:00:57Z], 3] 08:26:47.591 [debug] QUERY OK source="media_items" db=0.6ms idle=930.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed\n\n*This video does not contain any paid promotion*\n\n00:00 Motor Production\n08:22 Fastener Production\n18:44 Fence Production\n28:27 Aluminum Profile Production\n\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed", "f0efa089-3835-4ebd-980c-d1ca5321db81", "https://www.youtube.com/watch?v=TiuOtBGzrK4", "TiuOtBGzrK4", false, 2263, false, 4, "/downloads/Factory_Monster/2025-12-02 【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed/【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed [TiuOtBGzrK4].mkv", false, false, 3, [], 98, ~U[2025-12-02 12:00:57Z], ~U[2025-12-23 08:26:47Z], ~U[2025-12-23 08:26:47Z], "【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed\n\n*This video does not contain any paid promotion*\n\n00:00 Motor Production\n08:22 Fastener Production\n18:44 Fence Production\n28:27 Aluminum Profile Production\n\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed", "https://www.youtube.com/watch?v=TiuOtBGzrK4", "TiuOtBGzrK4", 2263, false, "/downloads/Factory_Monster/2025-12-02 【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed/【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed [TiuOtBGzrK4].mkv", false, 3, ~U[2025-12-02 12:00:57Z]] 08:26:47.591 [debug] QUERY OK source="sources" db=0.2ms idle=54.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] 08:26:47.592 [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] 08:26:47.592 [debug] QUERY OK source="media_items" db=0.3ms 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 [22838] 08:26:47.592 [debug] Current batch of media processed. Will check again in 1000ms 08:26:48.593 [debug] Current batch of media processed. Will check again in 1000ms 08:26:49.594 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Turning Giant Tree Root into a Console Table. Wood Working Master in Korea\n\n📌Product in Video: https://naver.me/Gmb20I1P (OLD HAND GALLERY)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 734, "filename" => "/downloads/Factory_Monster/2025-11-28 Turning Giant Tree Root into a Console Table. Wood Working Master in Korea/Turning Giant Tree Root into a Console Table. Wood Working Master in Korea [QvPFtNbH9gs].mkv", "id" => "QvPFtNbH9gs", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=QvPFtNbH9gs", "playlist_index" => 5, "timestamp" => 1764315904, "title" => "Turning Giant Tree Root into a Console Table. Wood Working Master in Korea", "upload_date" => "20251128"} 08:26:49.595 [debug] QUERY OK source="sources" db=0.2ms idle=935.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:26:49.595 [debug] QUERY OK source="sources" db=0.2ms idle=935.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:26:49.596 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=936.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-28 07:45:04Z], 3] 08:26:49.597 [debug] QUERY OK source="media_items" db=0.5ms idle=937.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Turning Giant Tree Root into a Console Table. Wood Working Master in Korea\n\n📌Product in Video: https://naver.me/Gmb20I1P (OLD HAND GALLERY)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Turning Giant Tree Root into a Console Table. Wood Working Master in Korea", "13e56245-e5a1-410a-ac97-6cf80225c013", "https://www.youtube.com/watch?v=QvPFtNbH9gs", "QvPFtNbH9gs", false, 734, false, 5, "/downloads/Factory_Monster/2025-11-28 Turning Giant Tree Root into a Console Table. Wood Working Master in Korea/Turning Giant Tree Root into a Console Table. Wood Working Master in Korea [QvPFtNbH9gs].mkv", false, false, 3, [], 98, ~U[2025-11-28 07:45:04Z], ~U[2025-12-23 08:26:49Z], ~U[2025-12-23 08:26:49Z], "Turning Giant Tree Root into a Console Table. Wood Working Master in Korea\n\n📌Product in Video: https://naver.me/Gmb20I1P (OLD HAND GALLERY)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Turning Giant Tree Root into a Console Table. Wood Working Master in Korea", "https://www.youtube.com/watch?v=QvPFtNbH9gs", "QvPFtNbH9gs", 734, false, "/downloads/Factory_Monster/2025-11-28 Turning Giant Tree Root into a Console Table. Wood Working Master in Korea/Turning Giant Tree Root into a Console Table. Wood Working Master in Korea [QvPFtNbH9gs].mkv", false, 3, ~U[2025-11-28 07:45:04Z]] 08:26:49.598 [debug] QUERY OK source="sources" db=0.2ms idle=57.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] 08:26:49.598 [debug] QUERY OK source="media_profiles" db=0.2ms queue=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] 08:26:49.599 [debug] QUERY OK source="media_items" db=0.2ms 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 [21895] 08:26:49.599 [debug] Current batch of media processed. Will check again in 1000ms 08:26:50.600 [debug] Current batch of media processed. Will check again in 1000ms 08:26:51.601 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Ecosystem in a House! A Man Makes Vivarium in a Living Room\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/3LvAq3i \n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 1047, "filename" => "/downloads/Factory_Monster/2025-11-14 Ecosystem in a House! A Man Makes Vivarium in a Living Room/Ecosystem in a House! A Man Makes Vivarium in a Living Room [5Rqy6y0kaoA].mkv", "id" => "5Rqy6y0kaoA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=5Rqy6y0kaoA", "playlist_index" => 6, "timestamp" => 1763112602, "title" => "Ecosystem in a House! A Man Makes Vivarium in a Living Room", "upload_date" => "20251114"} 08:26:51.602 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=942.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] 08:26:51.603 [debug] QUERY OK source="sources" db=0.2ms idle=943.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] 08:26:51.604 [debug] QUERY OK source="media_items" db=0.6ms idle=943.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-14 09:30:02Z], 3] 08:26:51.605 [debug] QUERY OK source="media_items" db=0.6ms idle=944.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Ecosystem in a House! A Man Makes Vivarium in a Living Room\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/3LvAq3i \n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Ecosystem in a House! A Man Makes Vivarium in a Living Room", "0215f7cb-18a1-45e1-ad73-41a950be4244", "https://www.youtube.com/watch?v=5Rqy6y0kaoA", "5Rqy6y0kaoA", false, 1047, false, 6, "/downloads/Factory_Monster/2025-11-14 Ecosystem in a House! A Man Makes Vivarium in a Living Room/Ecosystem in a House! A Man Makes Vivarium in a Living Room [5Rqy6y0kaoA].mkv", false, false, 3, [], 98, ~U[2025-11-14 09:30:02Z], ~U[2025-12-23 08:26:51Z], ~U[2025-12-23 08:26:51Z], "Ecosystem in a House! A Man Makes Vivarium in a Living Room\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/3LvAq3i \n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Ecosystem in a House! A Man Makes Vivarium in a Living Room", "https://www.youtube.com/watch?v=5Rqy6y0kaoA", "5Rqy6y0kaoA", 1047, false, "/downloads/Factory_Monster/2025-11-14 Ecosystem in a House! A Man Makes Vivarium in a Living Room/Ecosystem in a House! A Man Makes Vivarium in a Living Room [5Rqy6y0kaoA].mkv", false, 3, ~U[2025-11-14 09:30:02Z]] 08:26:51.605 [debug] QUERY OK source="sources" db=0.2ms idle=60.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] 08:26:51.605 [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] 08:26:51.606 [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 [19451] 08:26:51.606 [debug] Current batch of media processed. Will check again in 1000ms 08:26:52.607 [debug] Current batch of media processed. Will check again in 1000ms 08:26:53.608 [debug] Current batch of media processed. Will check again in 1000ms 08:26:54.610 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://jeilbearing.com (JIB)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 611, "filename" => "/downloads/Factory_Monster/2025-11-08 10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process/10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process [aO6nZa2DTgc].mkv", "id" => "aO6nZa2DTgc", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=aO6nZa2DTgc", "playlist_index" => 7, "timestamp" => 1762596004, "title" => "10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process", "upload_date" => "20251108"} 08:26:54.610 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1951.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:26:54.611 [debug] QUERY OK source="sources" db=0.2ms idle=1951.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] 08:26:54.612 [debug] QUERY OK source="media_items" db=0.5ms idle=1951.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-08 10:00:04Z], 3] 08:26:54.613 [debug] QUERY OK source="media_items" db=0.6ms idle=1063.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://jeilbearing.com (JIB)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process", "2601a8a2-287e-45ff-84bd-d0ef3803b8cf", "https://www.youtube.com/watch?v=aO6nZa2DTgc", "aO6nZa2DTgc", false, 611, false, 7, "/downloads/Factory_Monster/2025-11-08 10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process/10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process [aO6nZa2DTgc].mkv", false, false, 3, [], 98, ~U[2025-11-08 10:00:04Z], ~U[2025-12-23 08:26:54Z], ~U[2025-12-23 08:26:54Z], "10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://jeilbearing.com (JIB)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process", "https://www.youtube.com/watch?v=aO6nZa2DTgc", "aO6nZa2DTgc", 611, false, "/downloads/Factory_Monster/2025-11-08 10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process/10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process [aO6nZa2DTgc].mkv", false, 3, ~U[2025-11-08 10:00:04Z]] 08:26:54.613 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=62.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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:26:54.614 [debug] QUERY OK source="media_profiles" db=0.2ms queue=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] 08:26:54.614 [debug] QUERY OK source="media_items" db=0.2ms 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 [18312] 08:26:54.615 [debug] Current batch of media processed. Will check again in 1000ms 08:26:55.616 [debug] Current batch of media processed. Will check again in 1000ms 08:26:56.618 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Huge Creature Grooming Master in Korea\n\n*This video does not contain any paid promotion*\n\n00:00 Big\n09:34 Small\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 1221, "filename" => "/downloads/Factory_Monster/2025-11-02 Huge Creature Grooming Master in Korea/Huge Creature Grooming Master in Korea [KLHZgtLjIzA].mkv", "id" => "KLHZgtLjIzA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=KLHZgtLjIzA", "playlist_index" => 8, "timestamp" => 1762065010, "title" => "Huge Creature Grooming Master in Korea", "upload_date" => "20251102"} 08:26:56.618 [debug] QUERY OK source="sources" db=0.1ms idle=958.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:26:56.619 [debug] QUERY OK source="sources" db=0.2ms idle=959.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] 08:26:56.620 [debug] QUERY OK source="media_items" db=0.7ms idle=959.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-02 06:30:10Z], 3] 08:26:56.621 [debug] QUERY OK source="media_items" db=0.6ms idle=960.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Huge Creature Grooming Master in Korea\n\n*This video does not contain any paid promotion*\n\n00:00 Big\n09:34 Small\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Huge Creature Grooming Master in Korea", "884c0bb6-8be6-4709-a396-bc1a6c7823a8", "https://www.youtube.com/watch?v=KLHZgtLjIzA", "KLHZgtLjIzA", false, 1221, false, 8, "/downloads/Factory_Monster/2025-11-02 Huge Creature Grooming Master in Korea/Huge Creature Grooming Master in Korea [KLHZgtLjIzA].mkv", false, false, 3, [], 98, ~U[2025-11-02 06:30:10Z], ~U[2025-12-23 08:26:56Z], ~U[2025-12-23 08:26:56Z], "Huge Creature Grooming Master in Korea\n\n*This video does not contain any paid promotion*\n\n00:00 Big\n09:34 Small\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Huge Creature Grooming Master in Korea", "https://www.youtube.com/watch?v=KLHZgtLjIzA", "KLHZgtLjIzA", 1221, false, "/downloads/Factory_Monster/2025-11-02 Huge Creature Grooming Master in Korea/Huge Creature Grooming Master in Korea [KLHZgtLjIzA].mkv", false, 3, ~U[2025-11-02 06:30:10Z]] 08:26:56.621 [debug] QUERY OK source="sources" db=0.2ms idle=65.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] 08:26:56.622 [debug] QUERY OK source="media_profiles" db=0.3ms queue=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] 08:26:56.622 [debug] QUERY OK source="media_items" db=0.2ms 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 [16982] 08:26:56.622 [debug] Current batch of media processed. Will check again in 1000ms 08:26:57.623 [debug] Current batch of media processed. Will check again in 1000ms 08:26:58.624 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory\n\n*This video does not contain any paid promotion*\n\n00:00 Sweaters & Knitwear\n12:52 Towel Production\n20:42 Muffler Production\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#factory", "duration" => 1729, "filename" => "/downloads/Factory_Monster/2025-10-29 How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory/How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory [BBPI6pIgPkE].mkv", "id" => "BBPI6pIgPkE", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=BBPI6pIgPkE", "playlist_index" => 9, "timestamp" => 1761732029, "title" => "How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory", "upload_date" => "20251029"} 08:26:58.625 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=965.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] 08:26:58.625 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=965.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:26:58.627 [debug] QUERY OK source="media_items" db=0.8ms queue=0.2ms idle=966.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-29 10:00:29Z], 3] 08:26:58.628 [debug] QUERY OK source="media_items" db=1.0ms idle=967.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory\n\n*This video does not contain any paid promotion*\n\n00:00 Sweaters & Knitwear\n12:52 Towel Production\n20:42 Muffler Production\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#factory", "How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory", "f59d2121-5195-4468-a72c-cd3f2e588b38", "https://www.youtube.com/watch?v=BBPI6pIgPkE", "BBPI6pIgPkE", false, 1729, false, 9, "/downloads/Factory_Monster/2025-10-29 How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory/How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory [BBPI6pIgPkE].mkv", false, false, 3, [], 98, ~U[2025-10-29 10:00:29Z], ~U[2025-12-23 08:26:58Z], ~U[2025-12-23 08:26:58Z], "How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory\n\n*This video does not contain any paid promotion*\n\n00:00 Sweaters & Knitwear\n12:52 Towel Production\n20:42 Muffler Production\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#factory", "How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory", "https://www.youtube.com/watch?v=BBPI6pIgPkE", "BBPI6pIgPkE", 1729, false, "/downloads/Factory_Monster/2025-10-29 How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory/How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory [BBPI6pIgPkE].mkv", false, 3, ~U[2025-10-29 10:00:29Z]] 08:26:58.629 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=68.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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:26:58.629 [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] 08:26:58.630 [debug] QUERY OK source="media_items" db=0.1ms idle=4.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 [16412] 08:26:58.630 [debug] Current batch of media processed. Will check again in 1000ms 08:26:59.631 [debug] Current batch of media processed. Will check again in 1000ms 08:27:00.558 [info] {"source":"oban","duration":740,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:27:00.632 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "The Incredible Process of Turning Raw Plastic into Colorful Food Containers\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://shop.tupperware.co.kr (TUPPERWARE)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 608, "filename" => "/downloads/Factory_Monster/2025-10-25 The Incredible Process of Turning Raw Plastic into Colorful Food Containers/The Incredible Process of Turning Raw Plastic into Colorful Food Containers [obPa9dTqax0].mkv", "id" => "obPa9dTqax0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=obPa9dTqax0", "playlist_index" => 10, "timestamp" => 1761375653, "title" => "The Incredible Process of Turning Raw Plastic into Colorful Food Containers", "upload_date" => "20251025"} 08:27:00.633 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=973.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] 08:27:00.633 [debug] QUERY OK source="sources" db=0.1ms idle=974.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:00.634 [debug] QUERY OK source="media_items" db=0.6ms idle=974.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-25 07:00:53Z], 3] 08:27:00.635 [debug] QUERY OK source="media_items" db=0.7ms idle=76.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Incredible Process of Turning Raw Plastic into Colorful Food Containers\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://shop.tupperware.co.kr (TUPPERWARE)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "The Incredible Process of Turning Raw Plastic into Colorful Food Containers", "26a0b894-66de-42ed-af92-0ba55f34f169", "https://www.youtube.com/watch?v=obPa9dTqax0", "obPa9dTqax0", false, 608, false, 10, "/downloads/Factory_Monster/2025-10-25 The Incredible Process of Turning Raw Plastic into Colorful Food Containers/The Incredible Process of Turning Raw Plastic into Colorful Food Containers [obPa9dTqax0].mkv", false, false, 3, [], 98, ~U[2025-10-25 07:00:53Z], ~U[2025-12-23 08:27:00Z], ~U[2025-12-23 08:27:00Z], "The Incredible Process of Turning Raw Plastic into Colorful Food Containers\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://shop.tupperware.co.kr (TUPPERWARE)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "The Incredible Process of Turning Raw Plastic into Colorful Food Containers", "https://www.youtube.com/watch?v=obPa9dTqax0", "obPa9dTqax0", 608, false, "/downloads/Factory_Monster/2025-10-25 The Incredible Process of Turning Raw Plastic into Colorful Food Containers/The Incredible Process of Turning Raw Plastic into Colorful Food Containers [obPa9dTqax0].mkv", false, 3, ~U[2025-10-25 07:00:53Z]] 08:27:00.636 [debug] QUERY OK source="sources" db=0.1ms idle=72.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] 08:27:00.636 [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] 08:27:00.636 [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 [15462] 08:27:00.636 [debug] Current batch of media processed. Will check again in 1000ms 08:27:01.637 [debug] Current batch of media processed. Will check again in 1000ms 08:27:02.638 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "How Giant Mining Drills Are Mass Produced with Expert Engineering\n\n*This video does not contain any paid promotion*\n\n00:00 Rock Tools\n10:39 Giant Rock Tool\n20:07 Excavator Grapple\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#factory", "duration" => 1829, "filename" => "/downloads/Factory_Monster/2025-10-18 How Giant Mining Drills Are Mass Produced with Expert Engineering/How Giant Mining Drills Are Mass Produced with Expert Engineering [ZTcL-tL3EG8].mkv", "id" => "ZTcL-tL3EG8", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=ZTcL-tL3EG8", "playlist_index" => 11, "timestamp" => 1760778048, "title" => "How Giant Mining Drills Are Mass Produced with Expert Engineering", "upload_date" => "20251018"} 08:27:02.638 [debug] QUERY OK source="sources" db=0.1ms idle=979.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:02.639 [debug] QUERY OK source="sources" db=0.1ms idle=979.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:02.640 [debug] QUERY OK source="media_items" db=0.6ms idle=979.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-18 09:00:48Z], 3] 08:27:02.641 [debug] QUERY OK source="media_items" db=0.7ms idle=980.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["How Giant Mining Drills Are Mass Produced with Expert Engineering\n\n*This video does not contain any paid promotion*\n\n00:00 Rock Tools\n10:39 Giant Rock Tool\n20:07 Excavator Grapple\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#factory", "How Giant Mining Drills Are Mass Produced with Expert Engineering", "9d6c55f5-a1b2-446a-ad98-95ada41467f4", "https://www.youtube.com/watch?v=ZTcL-tL3EG8", "ZTcL-tL3EG8", false, 1829, false, 11, "/downloads/Factory_Monster/2025-10-18 How Giant Mining Drills Are Mass Produced with Expert Engineering/How Giant Mining Drills Are Mass Produced with Expert Engineering [ZTcL-tL3EG8].mkv", false, false, 3, [], 98, ~U[2025-10-18 09:00:48Z], ~U[2025-12-23 08:27:02Z], ~U[2025-12-23 08:27:02Z], "How Giant Mining Drills Are Mass Produced with Expert Engineering\n\n*This video does not contain any paid promotion*\n\n00:00 Rock Tools\n10:39 Giant Rock Tool\n20:07 Excavator Grapple\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#factory", "How Giant Mining Drills Are Mass Produced with Expert Engineering", "https://www.youtube.com/watch?v=ZTcL-tL3EG8", "ZTcL-tL3EG8", 1829, false, "/downloads/Factory_Monster/2025-10-18 How Giant Mining Drills Are Mass Produced with Expert Engineering/How Giant Mining Drills Are Mass Produced with Expert Engineering [ZTcL-tL3EG8].mkv", false, 3, ~U[2025-10-18 09:00:48Z]] 08:27:02.641 [debug] QUERY OK source="sources" db=0.1ms idle=74.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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:27:02.642 [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] 08:27:02.642 [debug] QUERY OK source="media_items" db=0.2ms idle=3.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [14297] 08:27:02.642 [debug] Current batch of media processed. Will check again in 1000ms 08:27:03.643 [debug] Current batch of media processed. Will check again in 1000ms 08:27:04.645 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory\n\n00:00 Manhole Covers\n11:00 Valves\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#Metal recycling #Manhole #Factory", "duration" => 1645, "filename" => "/downloads/Factory_Monster/2025-10-11 Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory/Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory [6j2F5BdMiQ8].mkv", "id" => "6j2F5BdMiQ8", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=6j2F5BdMiQ8", "playlist_index" => 12, "timestamp" => 1760181300, "title" => "Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory", "upload_date" => "20251011"} 08:27:04.645 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=985.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 (?)) [3] 08:27:04.646 [debug] QUERY OK source="sources" db=0.1ms idle=986.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:04.646 [debug] QUERY OK source="media_items" db=0.7ms idle=986.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-11 11:15:00Z], 3] 08:27:04.647 [debug] QUERY OK source="media_items" db=0.6ms idle=987.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory\n\n00:00 Manhole Covers\n11:00 Valves\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#Metal recycling #Manhole #Factory", "Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory", "6cfac0c3-9d81-403b-94bb-09d62861d429", "https://www.youtube.com/watch?v=6j2F5BdMiQ8", "6j2F5BdMiQ8", false, 1645, false, 12, "/downloads/Factory_Monster/2025-10-11 Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory/Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory [6j2F5BdMiQ8].mkv", false, false, 3, [], 98, ~U[2025-10-11 11:15:00Z], ~U[2025-12-23 08:27:04Z], ~U[2025-12-23 08:27:04Z], "Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory\n\n00:00 Manhole Covers\n11:00 Valves\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#Metal recycling #Manhole #Factory", "Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory", "https://www.youtube.com/watch?v=6j2F5BdMiQ8", "6j2F5BdMiQ8", 1645, false, "/downloads/Factory_Monster/2025-10-11 Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory/Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory [6j2F5BdMiQ8].mkv", false, 3, ~U[2025-10-11 11:15:00Z]] 08:27:04.648 [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" = ?) [3] 08:27:04.648 [debug] QUERY OK source="media_profiles" db=0.1ms queue=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] 08:27:04.649 [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 [12971] 08:27:04.649 [debug] Current batch of media processed. Will check again in 1000ms 08:27:05.650 [debug] Current batch of media processed. Will check again in 1000ms 08:27:06.651 [debug] Current batch of media processed. Will check again in 1000ms 08:27:07.653 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://volvikmall.com (Volvik)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 818, "filename" => "/downloads/Factory_Monster/2025-10-07 How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets/How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets [mOd250yOT2M].mkv", "id" => "mOd250yOT2M", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=mOd250yOT2M", "playlist_index" => 13, "timestamp" => 1759841865, "title" => "How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets", "upload_date" => "20251007"} 08:27:07.654 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=1994.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:07.654 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1994.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:07.655 [debug] QUERY OK source="media_items" db=0.6ms idle=1995.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-07 12:57:45Z], 3] 08:27:07.656 [debug] QUERY OK source="media_items" db=0.6ms idle=1079.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://volvikmall.com (Volvik)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets", "95abd0fd-3656-4eac-b504-6f74374b2df1", "https://www.youtube.com/watch?v=mOd250yOT2M", "mOd250yOT2M", false, 818, false, 13, "/downloads/Factory_Monster/2025-10-07 How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets/How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets [mOd250yOT2M].mkv", false, false, 3, [], 98, ~U[2025-10-07 12:57:45Z], ~U[2025-12-23 08:27:07Z], ~U[2025-12-23 08:27:07Z], "How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://volvikmall.com (Volvik)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets", "https://www.youtube.com/watch?v=mOd250yOT2M", "mOd250yOT2M", 818, false, "/downloads/Factory_Monster/2025-10-07 How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets/How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets [mOd250yOT2M].mkv", false, 3, ~U[2025-10-07 12:57:45Z]] 08:27:07.657 [debug] QUERY OK source="sources" db=0.1ms idle=78.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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:27:07.657 [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] 08:27:07.657 [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 [12235] 08:27:07.658 [debug] Current batch of media processed. Will check again in 1000ms 08:27:08.659 [debug] Current batch of media processed. Will check again in 1000ms 08:27:09.660 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology\n\n*This video does not contain any paid promotion*\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 2089, "filename" => "/downloads/Factory_Monster/2025-10-03 How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology/How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology [i-m4APD3d44].mkv", "id" => "i-m4APD3d44", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=i-m4APD3d44", "playlist_index" => 14, "timestamp" => 1759492884, "title" => "How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology", "upload_date" => "20251003"} 08:27:09.660 [debug] QUERY OK source="sources" db=0.1ms idle=1001.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:09.661 [debug] QUERY OK source="sources" db=0.1ms idle=1001.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] 08:27:09.662 [debug] QUERY OK source="media_items" db=0.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[2025-10-03 12:01:24Z], 3] 08:27:09.663 [debug] QUERY OK source="media_items" db=0.6ms idle=1002.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology\n\n*This video does not contain any paid promotion*\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology", "f9a17a8f-d8a4-4cd2-a40d-fcba72ad68a0", "https://www.youtube.com/watch?v=i-m4APD3d44", "i-m4APD3d44", false, 2089, false, 14, "/downloads/Factory_Monster/2025-10-03 How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology/How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology [i-m4APD3d44].mkv", false, false, 3, [], 98, ~U[2025-10-03 12:01:24Z], ~U[2025-12-23 08:27:09Z], ~U[2025-12-23 08:27:09Z], "How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology\n\n*This video does not contain any paid promotion*\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology", "https://www.youtube.com/watch?v=i-m4APD3d44", "i-m4APD3d44", 2089, false, "/downloads/Factory_Monster/2025-10-03 How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology/How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology [i-m4APD3d44].mkv", false, 3, ~U[2025-10-03 12:01:24Z]] 08:27:09.664 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=81.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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:27:09.664 [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] 08:27:09.664 [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 [11511] 08:27:09.665 [debug] Current batch of media processed. Will check again in 1000ms 08:27:10.665 [debug] Current batch of media processed. Will check again in 1000ms 08:27:11.666 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://www.instagram.com/guinongkr (GUINONG)\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 606, "filename" => "/downloads/Factory_Monster/2025-09-13 Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags/Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags [hI7m7LmEIuE].mkv", "id" => "hI7m7LmEIuE", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=hI7m7LmEIuE", "playlist_index" => 15, "timestamp" => 1757752219, "title" => "Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags", "upload_date" => "20250913"} 08:27:11.667 [debug] QUERY OK source="sources" db=0.2ms queue=0.2ms idle=81.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:11.668 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 08:27:11.668 [debug] QUERY OK source="media_items" db=0.6ms idle=8.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-13 08:30:19Z], 3] 08:27:11.670 [debug] QUERY OK source="media_items" db=0.7ms idle=9.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://www.instagram.com/guinongkr (GUINONG)\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags", "2ede7899-9113-4ed4-9e7e-404f25f5a887", "https://www.youtube.com/watch?v=hI7m7LmEIuE", "hI7m7LmEIuE", false, 606, false, 15, "/downloads/Factory_Monster/2025-09-13 Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags/Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags [hI7m7LmEIuE].mkv", false, false, 3, [], 98, ~U[2025-09-13 08:30:19Z], ~U[2025-12-23 08:27:11Z], ~U[2025-12-23 08:27:11Z], "Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://www.instagram.com/guinongkr (GUINONG)\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags", "https://www.youtube.com/watch?v=hI7m7LmEIuE", "hI7m7LmEIuE", 606, false, "/downloads/Factory_Monster/2025-09-13 Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags/Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags [hI7m7LmEIuE].mkv", false, 3, ~U[2025-09-13 08:30:19Z]] 08:27:11.670 [debug] QUERY OK source="sources" db=0.2ms idle=10.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 08:27:11.670 [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] 08:27:11.671 [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 [7974] 08:27:11.671 [debug] Current batch of media processed. Will check again in 1000ms 08:27:12.672 [debug] Current batch of media processed. Will check again in 1000ms 08:27:13.674 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftmanship\n\n00:00 Simpsons Rug\n12:27 Kpop Demon Hunters Derpy Rug\n37:06 Squid Game Rug\n\n📌Mook Studio Youtube: https://bit.ly/3VFfQlr\n📌Mook Studio Instagram: https://bit.ly/3VBqidM\n📌Contact: factorymonster2021@gmail.com\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#rug #tufting #character", "duration" => 3486, "filename" => "/downloads/Factory_Monster/2025-09-10 The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship/The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship [UikdQfJnfIQ].mkv", "id" => "UikdQfJnfIQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=UikdQfJnfIQ", "playlist_index" => 16, "timestamp" => 1757512267, "title" => "The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship", "upload_date" => "20250910"} 08:27:13.674 [debug] QUERY OK source="sources" db=0.2ms 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" IN (?)) [3] 08:27:13.675 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [3] 08:27:13.676 [debug] QUERY OK source="media_items" db=0.7ms idle=15.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-10 13:51:07Z], 3] 08:27:13.677 [debug] QUERY OK source="media_items" db=0.6ms idle=17.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftmanship\n\n00:00 Simpsons Rug\n12:27 Kpop Demon Hunters Derpy Rug\n37:06 Squid Game Rug\n\n📌Mook Studio Youtube: https://bit.ly/3VFfQlr\n📌Mook Studio Instagram: https://bit.ly/3VBqidM\n📌Contact: factorymonster2021@gmail.com\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#rug #tufting #character", "The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship", "341e1300-57b4-4a89-8482-c979c2767eb1", "https://www.youtube.com/watch?v=UikdQfJnfIQ", "UikdQfJnfIQ", false, 3486, false, 16, "/downloads/Factory_Monster/2025-09-10 The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship/The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship [UikdQfJnfIQ].mkv", false, false, 3, [], 98, ~U[2025-09-10 13:51:07Z], ~U[2025-12-23 08:27:13Z], ~U[2025-12-23 08:27:13Z], "The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftmanship\n\n00:00 Simpsons Rug\n12:27 Kpop Demon Hunters Derpy Rug\n37:06 Squid Game Rug\n\n📌Mook Studio Youtube: https://bit.ly/3VFfQlr\n📌Mook Studio Instagram: https://bit.ly/3VBqidM\n📌Contact: factorymonster2021@gmail.com\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#rug #tufting #character", "The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship", "https://www.youtube.com/watch?v=UikdQfJnfIQ", "UikdQfJnfIQ", 3486, false, "/downloads/Factory_Monster/2025-09-10 The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship/The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship [UikdQfJnfIQ].mkv", false, 3, ~U[2025-09-10 13:51:07Z]] 08:27:13.677 [debug] QUERY OK source="sources" db=0.1ms idle=17.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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:27:13.677 [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] 08:27:13.678 [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 [333] 08:27:13.678 [debug] Current batch of media processed. Will check again in 1000ms 08:27:14.679 [debug] Current batch of media processed. Will check again in 1000ms 08:27:15.681 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists\n\n📦Product in Video: https://understood.kr (UNDERSTOOD)\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#leather #briefcase #handmade", "duration" => 1144, "filename" => "/downloads/Factory_Monster/2025-08-28 Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists/Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists [wkV3OUVbwnU].mkv", "id" => "wkV3OUVbwnU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=wkV3OUVbwnU", "playlist_index" => 17, "timestamp" => 1756380089, "title" => "Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists", "upload_date" => "20250828"} 08:27:15.681 [debug] QUERY OK source="sources" db=0.2ms idle=87.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:15.682 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 08:27:15.683 [debug] QUERY OK source="media_items" db=0.7ms idle=22.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-28 11:21:29Z], 3] 08:27:15.684 [debug] QUERY OK source="media_items" db=0.6ms idle=23.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists\n\n📦Product in Video: https://understood.kr (UNDERSTOOD)\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#leather #briefcase #handmade", "Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists", "7aaaab84-e5f2-4750-9610-f129a4c38d93", "https://www.youtube.com/watch?v=wkV3OUVbwnU", "wkV3OUVbwnU", false, 1144, false, 17, "/downloads/Factory_Monster/2025-08-28 Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists/Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists [wkV3OUVbwnU].mkv", false, false, 3, [], 98, ~U[2025-08-28 11:21:29Z], ~U[2025-12-23 08:27:15Z], ~U[2025-12-23 08:27:15Z], "Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists\n\n📦Product in Video: https://understood.kr (UNDERSTOOD)\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#leather #briefcase #handmade", "Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists", "https://www.youtube.com/watch?v=wkV3OUVbwnU", "wkV3OUVbwnU", 1144, false, "/downloads/Factory_Monster/2025-08-28 Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists/Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists [wkV3OUVbwnU].mkv", false, 3, ~U[2025-08-28 11:21:29Z]] 08:27:15.684 [debug] QUERY OK source="sources" db=0.1ms idle=24.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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:27:15.684 [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] 08:27:15.685 [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 [335] 08:27:15.685 [debug] Current batch of media processed. Will check again in 1000ms 08:27:15.705 [info] {"source":"oban","duration":1128,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:27:16.686 [debug] Current batch of media processed. Will check again in 1000ms 08:27:17.687 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Process of making office furniture. Korean furniture Factory\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://tofas.kr/257 (Tofas)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 593, "filename" => "/downloads/Factory_Monster/2025-08-21 Process of making office furniture. Korean furniture Factory/Process of making office furniture. Korean furniture Factory [7j8rJKOpfLg].mkv", "id" => "7j8rJKOpfLg", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=7j8rJKOpfLg", "playlist_index" => 18, "timestamp" => 1755768603, "title" => "Process of making office furniture. Korean furniture Factory", "upload_date" => "20250821"} 08:27:17.688 [debug] QUERY OK source="sources" db=0.2ms idle=90.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:17.688 [debug] QUERY OK source="sources" db=0.2ms idle=29.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:17.689 [debug] QUERY OK source="media_items" db=0.6ms idle=29.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-21 09:30:03Z], 3] 08:27:17.691 [debug] QUERY OK source="media_items" db=1.6ms idle=30.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Process of making office furniture. Korean furniture Factory\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://tofas.kr/257 (Tofas)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Process of making office furniture. Korean furniture Factory", "dac5610c-7ddb-4f0b-a50a-fa962d7093b6", "https://www.youtube.com/watch?v=7j8rJKOpfLg", "7j8rJKOpfLg", false, 593, false, 18, "/downloads/Factory_Monster/2025-08-21 Process of making office furniture. Korean furniture Factory/Process of making office furniture. Korean furniture Factory [7j8rJKOpfLg].mkv", false, false, 3, [], 98, ~U[2025-08-21 09:30:03Z], ~U[2025-12-23 08:27:17Z], ~U[2025-12-23 08:27:17Z], "Process of making office furniture. Korean furniture Factory\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://tofas.kr/257 (Tofas)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Process of making office furniture. Korean furniture Factory", "https://www.youtube.com/watch?v=7j8rJKOpfLg", "7j8rJKOpfLg", 593, false, "/downloads/Factory_Monster/2025-08-21 Process of making office furniture. Korean furniture Factory/Process of making office furniture. Korean furniture Factory [7j8rJKOpfLg].mkv", false, 3, ~U[2025-08-21 09:30:03Z]] 08:27:17.692 [debug] QUERY OK source="sources" db=0.1ms idle=32.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 08:27:17.692 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=4.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:27:17.693 [debug] QUERY OK source="media_items" db=0.2ms idle=4.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 [337] 08:27:17.693 [debug] Current batch of media processed. Will check again in 1000ms 08:27:18.694 [debug] Current batch of media processed. Will check again in 1000ms 08:27:19.695 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "100% Real Stone Pot! Top 4 Craziest Factories in Korea\n\n*This video does not contain any paid promotion\n\n00:00 Real Stone Pot\n13:22 Real Wood Table\n20:59 Traditional Door\n30:26 Steel Gate\n\n📌Contact: factorymonster2021@gmail.com\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#Stone #Wood #Natural", "duration" => 2478, "filename" => "/downloads/Factory_Monster/2025-08-18 100% Real Stone Pot! Top 4 Craziest Factories in Korea/100% Real Stone Pot! Top 4 Craziest Factories in Korea [kEuOEVixYLM].mkv", "id" => "kEuOEVixYLM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=kEuOEVixYLM", "playlist_index" => 19, "timestamp" => 1755519306, "title" => "100% Real Stone Pot! Top 4 Craziest Factories in Korea", "upload_date" => "20250818"} 08:27:19.696 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=95.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:19.697 [debug] QUERY OK source="sources" db=0.2ms idle=37.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:19.698 [debug] QUERY OK source="media_items" db=0.5ms idle=37.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-18 12:15:06Z], 3] 08:27:19.699 [debug] QUERY OK source="media_items" db=0.6ms idle=38.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["100% Real Stone Pot! Top 4 Craziest Factories in Korea\n\n*This video does not contain any paid promotion\n\n00:00 Real Stone Pot\n13:22 Real Wood Table\n20:59 Traditional Door\n30:26 Steel Gate\n\n📌Contact: factorymonster2021@gmail.com\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#Stone #Wood #Natural", "100% Real Stone Pot! Top 4 Craziest Factories in Korea", "dc9937d2-2f33-4767-9c52-0380955510e5", "https://www.youtube.com/watch?v=kEuOEVixYLM", "kEuOEVixYLM", false, 2478, false, 19, "/downloads/Factory_Monster/2025-08-18 100% Real Stone Pot! Top 4 Craziest Factories in Korea/100% Real Stone Pot! Top 4 Craziest Factories in Korea [kEuOEVixYLM].mkv", false, false, 3, [], 98, ~U[2025-08-18 12:15:06Z], ~U[2025-12-23 08:27:19Z], ~U[2025-12-23 08:27:19Z], "100% Real Stone Pot! Top 4 Craziest Factories in Korea\n\n*This video does not contain any paid promotion\n\n00:00 Real Stone Pot\n13:22 Real Wood Table\n20:59 Traditional Door\n30:26 Steel Gate\n\n📌Contact: factorymonster2021@gmail.com\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#Stone #Wood #Natural", "100% Real Stone Pot! Top 4 Craziest Factories in Korea", "https://www.youtube.com/watch?v=kEuOEVixYLM", "kEuOEVixYLM", 2478, false, "/downloads/Factory_Monster/2025-08-18 100% Real Stone Pot! Top 4 Craziest Factories in Korea/100% Real Stone Pot! Top 4 Craziest Factories in Korea [kEuOEVixYLM].mkv", false, 3, ~U[2025-08-18 12:15:06Z]] 08:27:19.699 [debug] QUERY OK source="sources" db=0.2ms idle=39.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] 08:27:19.700 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:27:19.700 [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 [339] 08:27:19.700 [debug] Current batch of media processed. Will check again in 1000ms 08:27:20.701 [debug] Current batch of media processed. Will check again in 1000ms 08:27:21.636 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@Factory_Monster --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/Factory_Monster/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/4b/7e/4b7e8e174950f6802cb483169918c9d910f599256778374174c97703482bae6c.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/fa/15/fa15f71c2f1491f1a014941a0f9068595ce713fbc061cdfa91e948a40eea040e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 101 with: 08:27:21.636 [debug] Gracefully stopping file follower 08:27:21.637 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=1937.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:21.638 [debug] QUERY OK source="sources" db=0.2ms idle=1937.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:21.639 [debug] QUERY OK source="media_items" db=0.7ms idle=1937.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-17 11:30:53Z], 3] 08:27:21.640 [debug] QUERY OK source="media_items" db=0.6ms idle=1035.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Handcrafted Sheepskin Jacket by a Master Artisan With 50 Years of Legacy\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://smartstore.naver.com/northbeach1987 (North Beach)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy", "5fa821f4-e732-417e-a0d2-4683f6c9029c", "https://www.youtube.com/watch?v=knlnR0qsLHc", "knlnR0qsLHc", false, 759, false, 1, "/downloads/Factory_Monster/2025-12-17 Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy/Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy [knlnR0qsLHc].mkv", false, false, 3, [], 98, ~U[2025-12-17 11:30:53Z], ~U[2025-12-23 08:27:21Z], ~U[2025-12-23 08:27:21Z], "Handcrafted Sheepskin Jacket by a Master Artisan With 50 Years of Legacy\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://smartstore.naver.com/northbeach1987 (North Beach)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy", "https://www.youtube.com/watch?v=knlnR0qsLHc", "knlnR0qsLHc", 759, false, "/downloads/Factory_Monster/2025-12-17 Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy/Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy [knlnR0qsLHc].mkv", false, 3, ~U[2025-12-17 11:30:53Z]] 08:27:21.640 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=35.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:21.641 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-12-12 09:45:03Z], 3] 08:27:21.642 [debug] QUERY OK source="media_items" db=0.7ms idle=3.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Incredible Process of Weaving Shading Nets in a Korean Factory\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/4frTRXq (가야테크)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "The Incredible Process of Weaving Shading Nets in a Korean Factory", "aeb5de7a-8aed-4da8-b5b8-6ca46ee15159", "https://www.youtube.com/watch?v=ObPvvMs2bkI", "ObPvvMs2bkI", false, 651, false, 2, "/downloads/Factory_Monster/2025-12-12 The Incredible Process of Weaving Shading Nets in a Korean Factory/The Incredible Process of Weaving Shading Nets in a Korean Factory [ObPvvMs2bkI].mkv", false, false, 3, [], 98, ~U[2025-12-12 09:45:03Z], ~U[2025-12-23 08:27:21Z], ~U[2025-12-23 08:27:21Z], "The Incredible Process of Weaving Shading Nets in a Korean Factory\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/4frTRXq (가야테크)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "The Incredible Process of Weaving Shading Nets in a Korean Factory", "https://www.youtube.com/watch?v=ObPvvMs2bkI", "ObPvvMs2bkI", 651, false, "/downloads/Factory_Monster/2025-12-12 The Incredible Process of Weaving Shading Nets in a Korean Factory/The Incredible Process of Weaving Shading Nets in a Korean Factory [ObPvvMs2bkI].mkv", false, 3, ~U[2025-12-12 09:45:03Z]] 08:27:21.643 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [3] 08:27:21.643 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-12-06 09:30:12Z], 3] 08:27:21.644 [debug] QUERY OK source="media_items" db=0.6ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Kitchen Faucet Mass Production in Korea\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/4gjiMO3\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Kitchen Faucet Mass Production in Korea", "a2d41f9e-833f-430e-a20e-aefd788e23d8", "https://www.youtube.com/watch?v=KR7UmQUMpyY", "KR7UmQUMpyY", false, 702, false, 3, "/downloads/Factory_Monster/2025-12-06 Kitchen Faucet Mass Production in Korea/Kitchen Faucet Mass Production in Korea [KR7UmQUMpyY].mkv", false, false, 3, [], 98, ~U[2025-12-06 09:30:12Z], ~U[2025-12-23 08:27:21Z], ~U[2025-12-23 08:27:21Z], "Kitchen Faucet Mass Production in Korea\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/4gjiMO3\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Kitchen Faucet Mass Production in Korea", "https://www.youtube.com/watch?v=KR7UmQUMpyY", "KR7UmQUMpyY", 702, false, "/downloads/Factory_Monster/2025-12-06 Kitchen Faucet Mass Production in Korea/Kitchen Faucet Mass Production in Korea [KR7UmQUMpyY].mkv", false, 3, ~U[2025-12-06 09:30:12Z]] 08:27:21.645 [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" = ?) [3] 08:27:21.646 [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[2025-12-02 12:00:57Z], 3] 08:27:21.647 [debug] QUERY OK source="media_items" db=0.7ms idle=3.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed\n\n*This video does not contain any paid promotion*\n\n00:00 Motor Production\n08:22 Fastener Production\n18:44 Fence Production\n28:27 Aluminum Profile Production\n\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed", "b024b76a-6bfa-4477-b612-4abf4c7b0df8", "https://www.youtube.com/watch?v=TiuOtBGzrK4", "TiuOtBGzrK4", false, 2263, false, 4, "/downloads/Factory_Monster/2025-12-02 【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed/【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed [TiuOtBGzrK4].mkv", false, false, 3, [], 98, ~U[2025-12-02 12:00:57Z], ~U[2025-12-23 08:27:21Z], ~U[2025-12-23 08:27:21Z], "【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed\n\n*This video does not contain any paid promotion*\n\n00:00 Motor Production\n08:22 Fastener Production\n18:44 Fence Production\n28:27 Aluminum Profile Production\n\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed", "https://www.youtube.com/watch?v=TiuOtBGzrK4", "TiuOtBGzrK4", 2263, false, "/downloads/Factory_Monster/2025-12-02 【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed/【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed [TiuOtBGzrK4].mkv", false, 3, ~U[2025-12-02 12:00:57Z]] 08:27:21.647 [debug] QUERY OK source="sources" db=0.3ms queue=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] 08:27:21.648 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-11-28 07:45:04Z], 3] 08:27:21.649 [debug] QUERY OK source="media_items" db=0.8ms idle=3.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Turning Giant Tree Root into a Console Table. Wood Working Master in Korea\n\n📌Product in Video: https://naver.me/Gmb20I1P (OLD HAND GALLERY)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Turning Giant Tree Root into a Console Table. Wood Working Master in Korea", "2e30707d-9fb6-4d11-9b4c-cdef35045b17", "https://www.youtube.com/watch?v=QvPFtNbH9gs", "QvPFtNbH9gs", false, 734, false, 5, "/downloads/Factory_Monster/2025-11-28 Turning Giant Tree Root into a Console Table. Wood Working Master in Korea/Turning Giant Tree Root into a Console Table. Wood Working Master in Korea [QvPFtNbH9gs].mkv", false, false, 3, [], 98, ~U[2025-11-28 07:45:04Z], ~U[2025-12-23 08:27:21Z], ~U[2025-12-23 08:27:21Z], "Turning Giant Tree Root into a Console Table. Wood Working Master in Korea\n\n📌Product in Video: https://naver.me/Gmb20I1P (OLD HAND GALLERY)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Turning Giant Tree Root into a Console Table. Wood Working Master in Korea", "https://www.youtube.com/watch?v=QvPFtNbH9gs", "QvPFtNbH9gs", 734, false, "/downloads/Factory_Monster/2025-11-28 Turning Giant Tree Root into a Console Table. Wood Working Master in Korea/Turning Giant Tree Root into a Console Table. Wood Working Master in Korea [QvPFtNbH9gs].mkv", false, 3, ~U[2025-11-28 07:45:04Z]] 08:27:21.650 [debug] QUERY OK source="sources" db=0.3ms idle=3.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 08:27:21.651 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-11-14 09:30:02Z], 3] 08:27:21.652 [debug] QUERY OK source="media_items" db=0.6ms idle=3.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Ecosystem in a House! A Man Makes Vivarium in a Living Room\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/3LvAq3i \n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Ecosystem in a House! A Man Makes Vivarium in a Living Room", "00a4f0a8-1867-40b9-8bb3-24dccffad71e", "https://www.youtube.com/watch?v=5Rqy6y0kaoA", "5Rqy6y0kaoA", false, 1047, false, 6, "/downloads/Factory_Monster/2025-11-14 Ecosystem in a House! A Man Makes Vivarium in a Living Room/Ecosystem in a House! A Man Makes Vivarium in a Living Room [5Rqy6y0kaoA].mkv", false, false, 3, [], 98, ~U[2025-11-14 09:30:02Z], ~U[2025-12-23 08:27:21Z], ~U[2025-12-23 08:27:21Z], "Ecosystem in a House! A Man Makes Vivarium in a Living Room\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/3LvAq3i \n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Ecosystem in a House! A Man Makes Vivarium in a Living Room", "https://www.youtube.com/watch?v=5Rqy6y0kaoA", "5Rqy6y0kaoA", 1047, false, "/downloads/Factory_Monster/2025-11-14 Ecosystem in a House! A Man Makes Vivarium in a Living Room/Ecosystem in a House! A Man Makes Vivarium in a Living Room [5Rqy6y0kaoA].mkv", false, 3, ~U[2025-11-14 09:30:02Z]] 08:27:21.652 [debug] QUERY OK source="sources" db=0.3ms 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] 08:27:21.653 [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[2025-11-08 10:00:04Z], 3] 08:27:21.654 [debug] QUERY OK source="media_items" db=0.7ms idle=3.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://jeilbearing.com (JIB)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process", "bb4b0ad3-4238-4c2a-9e89-3108147e5624", "https://www.youtube.com/watch?v=aO6nZa2DTgc", "aO6nZa2DTgc", false, 611, false, 7, "/downloads/Factory_Monster/2025-11-08 10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process/10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process [aO6nZa2DTgc].mkv", false, false, 3, [], 98, ~U[2025-11-08 10:00:04Z], ~U[2025-12-23 08:27:21Z], ~U[2025-12-23 08:27:21Z], "10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://jeilbearing.com (JIB)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process", "https://www.youtube.com/watch?v=aO6nZa2DTgc", "aO6nZa2DTgc", 611, false, "/downloads/Factory_Monster/2025-11-08 10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process/10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process [aO6nZa2DTgc].mkv", false, 3, ~U[2025-11-08 10:00:04Z]] 08:27:21.655 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [3] 08:27:21.655 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-11-02 06:30:10Z], 3] 08:27:21.780 [debug] QUERY OK source="media_items" db=124.5ms idle=3.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Huge Creature Grooming Master in Korea\n\n*This video does not contain any paid promotion*\n\n00:00 Big\n09:34 Small\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Huge Creature Grooming Master in Korea", "c3fd2282-a27e-4331-b553-9a3056feddaf", "https://www.youtube.com/watch?v=KLHZgtLjIzA", "KLHZgtLjIzA", false, 1221, false, 8, "/downloads/Factory_Monster/2025-11-02 Huge Creature Grooming Master in Korea/Huge Creature Grooming Master in Korea [KLHZgtLjIzA].mkv", false, false, 3, [], 98, ~U[2025-11-02 06:30:10Z], ~U[2025-12-23 08:27:21Z], ~U[2025-12-23 08:27:21Z], "Huge Creature Grooming Master in Korea\n\n*This video does not contain any paid promotion*\n\n00:00 Big\n09:34 Small\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Huge Creature Grooming Master in Korea", "https://www.youtube.com/watch?v=KLHZgtLjIzA", "KLHZgtLjIzA", 1221, false, "/downloads/Factory_Monster/2025-11-02 Huge Creature Grooming Master in Korea/Huge Creature Grooming Master in Korea [KLHZgtLjIzA].mkv", false, 3, ~U[2025-11-02 06:30:10Z]] 08:27:21.781 [debug] QUERY OK source="sources" db=0.4ms idle=127.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:21.782 [debug] QUERY OK source="media_items" db=0.7ms idle=127.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-29 10:00:29Z], 3] 08:27:22.194 [debug] QUERY OK source="media_items" db=411.5ms idle=127.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory\n\n*This video does not contain any paid promotion*\n\n00:00 Sweaters & Knitwear\n12:52 Towel Production\n20:42 Muffler Production\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#factory", "How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory", "001fac20-7e86-4a9c-b9c4-0a8836c3bfad", "https://www.youtube.com/watch?v=BBPI6pIgPkE", "BBPI6pIgPkE", false, 1729, false, 9, "/downloads/Factory_Monster/2025-10-29 How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory/How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory [BBPI6pIgPkE].mkv", false, false, 3, [], 98, ~U[2025-10-29 10:00:29Z], ~U[2025-12-23 08:27:21Z], ~U[2025-12-23 08:27:21Z], "How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory\n\n*This video does not contain any paid promotion*\n\n00:00 Sweaters & Knitwear\n12:52 Towel Production\n20:42 Muffler Production\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#factory", "How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory", "https://www.youtube.com/watch?v=BBPI6pIgPkE", "BBPI6pIgPkE", 1729, false, "/downloads/Factory_Monster/2025-10-29 How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory/How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory [BBPI6pIgPkE].mkv", false, 3, ~U[2025-10-29 10:00:29Z]] 08:27:22.195 [debug] QUERY OK source="sources" db=0.3ms idle=539.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:22.196 [debug] QUERY OK source="media_items" db=0.6ms idle=414.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-25 07:00:53Z], 3] 08:27:22.197 [debug] QUERY OK source="media_items" db=0.6ms idle=414.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Incredible Process of Turning Raw Plastic into Colorful Food Containers\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://shop.tupperware.co.kr (TUPPERWARE)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "The Incredible Process of Turning Raw Plastic into Colorful Food Containers", "477f71e0-4f1c-4e76-8b9c-9f684c3a211a", "https://www.youtube.com/watch?v=obPa9dTqax0", "obPa9dTqax0", false, 608, false, 10, "/downloads/Factory_Monster/2025-10-25 The Incredible Process of Turning Raw Plastic into Colorful Food Containers/The Incredible Process of Turning Raw Plastic into Colorful Food Containers [obPa9dTqax0].mkv", false, false, 3, [], 98, ~U[2025-10-25 07:00:53Z], ~U[2025-12-23 08:27:22Z], ~U[2025-12-23 08:27:22Z], "The Incredible Process of Turning Raw Plastic into Colorful Food Containers\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://shop.tupperware.co.kr (TUPPERWARE)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "The Incredible Process of Turning Raw Plastic into Colorful Food Containers", "https://www.youtube.com/watch?v=obPa9dTqax0", "obPa9dTqax0", 608, false, "/downloads/Factory_Monster/2025-10-25 The Incredible Process of Turning Raw Plastic into Colorful Food Containers/The Incredible Process of Turning Raw Plastic into Colorful Food Containers [obPa9dTqax0].mkv", false, 3, ~U[2025-10-25 07:00:53Z]] 08:27:22.198 [debug] QUERY OK source="sources" db=0.3ms idle=415.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:22.198 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-10-18 09:00:48Z], 3] 08:27:22.200 [debug] QUERY OK source="media_items" db=0.7ms idle=3.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["How Giant Mining Drills Are Mass Produced with Expert Engineering\n\n*This video does not contain any paid promotion*\n\n00:00 Rock Tools\n10:39 Giant Rock Tool\n20:07 Excavator Grapple\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#factory", "How Giant Mining Drills Are Mass Produced with Expert Engineering", "37b17f5b-c090-4db6-aaec-f8ce45bd97d6", "https://www.youtube.com/watch?v=ZTcL-tL3EG8", "ZTcL-tL3EG8", false, 1829, false, 11, "/downloads/Factory_Monster/2025-10-18 How Giant Mining Drills Are Mass Produced with Expert Engineering/How Giant Mining Drills Are Mass Produced with Expert Engineering [ZTcL-tL3EG8].mkv", false, false, 3, [], 98, ~U[2025-10-18 09:00:48Z], ~U[2025-12-23 08:27:22Z], ~U[2025-12-23 08:27:22Z], "How Giant Mining Drills Are Mass Produced with Expert Engineering\n\n*This video does not contain any paid promotion*\n\n00:00 Rock Tools\n10:39 Giant Rock Tool\n20:07 Excavator Grapple\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#factory", "How Giant Mining Drills Are Mass Produced with Expert Engineering", "https://www.youtube.com/watch?v=ZTcL-tL3EG8", "ZTcL-tL3EG8", 1829, false, "/downloads/Factory_Monster/2025-10-18 How Giant Mining Drills Are Mass Produced with Expert Engineering/How Giant Mining Drills Are Mass Produced with Expert Engineering [ZTcL-tL3EG8].mkv", false, 3, ~U[2025-10-18 09:00:48Z]] 08:27:22.200 [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] 08:27:22.201 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-10-11 11:15:00Z], 3] 08:27:22.202 [debug] QUERY OK source="media_items" db=0.6ms idle=3.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory\n\n00:00 Manhole Covers\n11:00 Valves\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#Metal recycling #Manhole #Factory", "Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory", "05716e57-c72c-459f-bc88-03805a1bcd9b", "https://www.youtube.com/watch?v=6j2F5BdMiQ8", "6j2F5BdMiQ8", false, 1645, false, 12, "/downloads/Factory_Monster/2025-10-11 Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory/Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory [6j2F5BdMiQ8].mkv", false, false, 3, [], 98, ~U[2025-10-11 11:15:00Z], ~U[2025-12-23 08:27:22Z], ~U[2025-12-23 08:27:22Z], "Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory\n\n00:00 Manhole Covers\n11:00 Valves\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#Metal recycling #Manhole #Factory", "Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory", "https://www.youtube.com/watch?v=6j2F5BdMiQ8", "6j2F5BdMiQ8", 1645, false, "/downloads/Factory_Monster/2025-10-11 Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory/Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory [6j2F5BdMiQ8].mkv", false, 3, ~U[2025-10-11 11:15:00Z]] 08:27:22.202 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 08:27:22.203 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-10-07 12:57:45Z], 3] 08:27:22.204 [debug] QUERY OK source="media_items" db=0.7ms idle=3.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://volvikmall.com (Volvik)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets", "fd250479-7562-4e0b-b7c9-29c765ea2bf9", "https://www.youtube.com/watch?v=mOd250yOT2M", "mOd250yOT2M", false, 818, false, 13, "/downloads/Factory_Monster/2025-10-07 How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets/How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets [mOd250yOT2M].mkv", false, false, 3, [], 98, ~U[2025-10-07 12:57:45Z], ~U[2025-12-23 08:27:22Z], ~U[2025-12-23 08:27:22Z], "How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://volvikmall.com (Volvik)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets", "https://www.youtube.com/watch?v=mOd250yOT2M", "mOd250yOT2M", 818, false, "/downloads/Factory_Monster/2025-10-07 How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets/How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets [mOd250yOT2M].mkv", false, 3, ~U[2025-10-07 12:57:45Z]] 08:27:22.205 [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] 08:27:22.205 [debug] QUERY OK source="media_items" db=0.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[2025-10-03 12:01:24Z], 3] 08:27:22.206 [debug] QUERY OK source="media_items" db=0.6ms idle=3.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology\n\n*This video does not contain any paid promotion*\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology", "e1d000dc-05d3-4dc3-8f17-9354ab3c79ad", "https://www.youtube.com/watch?v=i-m4APD3d44", "i-m4APD3d44", false, 2089, false, 14, "/downloads/Factory_Monster/2025-10-03 How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology/How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology [i-m4APD3d44].mkv", false, false, 3, [], 98, ~U[2025-10-03 12:01:24Z], ~U[2025-12-23 08:27:22Z], ~U[2025-12-23 08:27:22Z], "How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology\n\n*This video does not contain any paid promotion*\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology", "https://www.youtube.com/watch?v=i-m4APD3d44", "i-m4APD3d44", 2089, false, "/downloads/Factory_Monster/2025-10-03 How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology/How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology [i-m4APD3d44].mkv", false, 3, ~U[2025-10-03 12:01:24Z]] 08:27:22.207 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 08:27:22.208 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-09-13 08:30:19Z], 3] 08:27:22.209 [debug] QUERY OK source="media_items" db=1.3ms idle=3.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://www.instagram.com/guinongkr (GUINONG)\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags", "ce9cf8f6-83be-48bd-9265-ab66efee509d", "https://www.youtube.com/watch?v=hI7m7LmEIuE", "hI7m7LmEIuE", false, 606, false, 15, "/downloads/Factory_Monster/2025-09-13 Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags/Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags [hI7m7LmEIuE].mkv", false, false, 3, [], 98, ~U[2025-09-13 08:30:19Z], ~U[2025-12-23 08:27:22Z], ~U[2025-12-23 08:27:22Z], "Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://www.instagram.com/guinongkr (GUINONG)\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags", "https://www.youtube.com/watch?v=hI7m7LmEIuE", "hI7m7LmEIuE", 606, false, "/downloads/Factory_Monster/2025-09-13 Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags/Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags [hI7m7LmEIuE].mkv", false, 3, ~U[2025-09-13 08:30:19Z]] 08:27:22.210 [debug] QUERY OK source="sources" db=0.3ms idle=3.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 08:27:22.211 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-09-10 13:51:07Z], 3] 08:27:22.212 [debug] QUERY OK source="media_items" db=0.6ms idle=3.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftmanship\n\n00:00 Simpsons Rug\n12:27 Kpop Demon Hunters Derpy Rug\n37:06 Squid Game Rug\n\n📌Mook Studio Youtube: https://bit.ly/3VFfQlr\n📌Mook Studio Instagram: https://bit.ly/3VBqidM\n📌Contact: factorymonster2021@gmail.com\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#rug #tufting #character", "The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship", "390529a5-9878-498a-8b96-4e0cfee3b10f", "https://www.youtube.com/watch?v=UikdQfJnfIQ", "UikdQfJnfIQ", false, 3486, false, 16, "/downloads/Factory_Monster/2025-09-10 The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship/The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship [UikdQfJnfIQ].mkv", false, false, 3, [], 98, ~U[2025-09-10 13:51:07Z], ~U[2025-12-23 08:27:22Z], ~U[2025-12-23 08:27:22Z], "The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftmanship\n\n00:00 Simpsons Rug\n12:27 Kpop Demon Hunters Derpy Rug\n37:06 Squid Game Rug\n\n📌Mook Studio Youtube: https://bit.ly/3VFfQlr\n📌Mook Studio Instagram: https://bit.ly/3VBqidM\n📌Contact: factorymonster2021@gmail.com\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#rug #tufting #character", "The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship", "https://www.youtube.com/watch?v=UikdQfJnfIQ", "UikdQfJnfIQ", 3486, false, "/downloads/Factory_Monster/2025-09-10 The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship/The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship [UikdQfJnfIQ].mkv", false, 3, ~U[2025-09-10 13:51:07Z]] 08:27:22.212 [debug] QUERY OK source="sources" db=0.3ms 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] 08:27:22.213 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-08-28 11:21:29Z], 3] 08:27:22.214 [debug] QUERY OK source="media_items" db=0.6ms idle=3.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists\n\n📦Product in Video: https://understood.kr (UNDERSTOOD)\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#leather #briefcase #handmade", "Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists", "0f95f3c4-b4ee-40a4-b52a-39f2bc841252", "https://www.youtube.com/watch?v=wkV3OUVbwnU", "wkV3OUVbwnU", false, 1144, false, 17, "/downloads/Factory_Monster/2025-08-28 Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists/Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists [wkV3OUVbwnU].mkv", false, false, 3, [], 98, ~U[2025-08-28 11:21:29Z], ~U[2025-12-23 08:27:22Z], ~U[2025-12-23 08:27:22Z], "Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists\n\n📦Product in Video: https://understood.kr (UNDERSTOOD)\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#leather #briefcase #handmade", "Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists", "https://www.youtube.com/watch?v=wkV3OUVbwnU", "wkV3OUVbwnU", 1144, false, "/downloads/Factory_Monster/2025-08-28 Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists/Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists [wkV3OUVbwnU].mkv", false, 3, ~U[2025-08-28 11:21:29Z]] 08:27:22.214 [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] 08:27:22.215 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-08-21 09:30:03Z], 3] 08:27:22.216 [debug] QUERY OK source="media_items" db=0.6ms idle=2.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Process of making office furniture. Korean furniture Factory\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://tofas.kr/257 (Tofas)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Process of making office furniture. Korean furniture Factory", "7b749e98-f95e-40a3-ac58-53ab3e18fa8c", "https://www.youtube.com/watch?v=7j8rJKOpfLg", "7j8rJKOpfLg", false, 593, false, 18, "/downloads/Factory_Monster/2025-08-21 Process of making office furniture. Korean furniture Factory/Process of making office furniture. Korean furniture Factory [7j8rJKOpfLg].mkv", false, false, 3, [], 98, ~U[2025-08-21 09:30:03Z], ~U[2025-12-23 08:27:22Z], ~U[2025-12-23 08:27:22Z], "Process of making office furniture. Korean furniture Factory\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://tofas.kr/257 (Tofas)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Process of making office furniture. Korean furniture Factory", "https://www.youtube.com/watch?v=7j8rJKOpfLg", "7j8rJKOpfLg", 593, false, "/downloads/Factory_Monster/2025-08-21 Process of making office furniture. Korean furniture Factory/Process of making office furniture. Korean furniture Factory [7j8rJKOpfLg].mkv", false, 3, ~U[2025-08-21 09:30:03Z]] 08:27:22.216 [debug] QUERY OK source="sources" db=0.2ms idle=3.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 08:27:22.217 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-08-18 12:15:06Z], 3] 08:27:22.220 [debug] QUERY OK source="media_items" db=0.6ms idle=4.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["100% Real Stone Pot! Top 4 Craziest Factories in Korea\n\n*This video does not contain any paid promotion\n\n00:00 Real Stone Pot\n13:22 Real Wood Table\n20:59 Traditional Door\n30:26 Steel Gate\n\n📌Contact: factorymonster2021@gmail.com\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#Stone #Wood #Natural", "100% Real Stone Pot! Top 4 Craziest Factories in Korea", "3bc5e79a-3ac6-4d2c-b748-9f618934dbb4", "https://www.youtube.com/watch?v=kEuOEVixYLM", "kEuOEVixYLM", false, 2478, false, 19, "/downloads/Factory_Monster/2025-08-18 100% Real Stone Pot! Top 4 Craziest Factories in Korea/100% Real Stone Pot! Top 4 Craziest Factories in Korea [kEuOEVixYLM].mkv", false, false, 3, [], 98, ~U[2025-08-18 12:15:06Z], ~U[2025-12-23 08:27:22Z], ~U[2025-12-23 08:27:22Z], "100% Real Stone Pot! Top 4 Craziest Factories in Korea\n\n*This video does not contain any paid promotion\n\n00:00 Real Stone Pot\n13:22 Real Wood Table\n20:59 Traditional Door\n30:26 Steel Gate\n\n📌Contact: factorymonster2021@gmail.com\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#Stone #Wood #Natural", "100% Real Stone Pot! Top 4 Craziest Factories in Korea", "https://www.youtube.com/watch?v=kEuOEVixYLM", "kEuOEVixYLM", 2478, false, "/downloads/Factory_Monster/2025-08-18 100% Real Stone Pot! Top 4 Craziest Factories in Korea/100% Real Stone Pot! Top 4 Craziest Factories in Korea [kEuOEVixYLM].mkv", false, 3, ~U[2025-08-18 12:15:06Z]] 08:27:22.220 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [3] 08:27:22.221 [debug] QUERY OK source="media_items" db=0.7ms idle=4.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-09 10:26:00Z], 3] 08:27:22.223 [debug] QUERY OK source="media_items" db=0.8ms idle=5.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["$3000 Handmade Rug! Process of making Korean Traditional Character Rug\n\n*This video does not contain any paid promotion*\n\n📌Mook Studio Youtube: https://bit.ly/3VFfQlr\n📌Mook Studio Instagram: https://bit.ly/3VBqidM\n📌Contact: factorymonster2021@gmail.com\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n#kpopdemonhunters #rug #tufting", "$3000 Handmade Rug! Process of making Korean Traditional Character Rug", "81feb60c-d5c1-4590-a2f3-062a4f84f5c7", "https://www.youtube.com/watch?v=UdKhZz4D7sE", "UdKhZz4D7sE", false, 1277, false, 20, "/downloads/Factory_Monster/2025-08-09 $3000 Handmade Rug! Process of making Korean Traditional Character Rug/$3000 Handmade Rug! Process of making Korean Traditional Character Rug [UdKhZz4D7sE].mkv", false, false, 3, [], 98, ~U[2025-08-09 10:26:00Z], ~U[2025-12-23 08:27:22Z], ~U[2025-12-23 08:27:22Z], "$3000 Handmade Rug! Process of making Korean Traditional Character Rug\n\n*This video does not contain any paid promotion*\n\n📌Mook Studio Youtube: https://bit.ly/3VFfQlr\n📌Mook Studio Instagram: https://bit.ly/3VBqidM\n📌Contact: factorymonster2021@gmail.com\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n#kpopdemonhunters #rug #tufting", "$3000 Handmade Rug! Process of making Korean Traditional Character Rug", "https://www.youtube.com/watch?v=UdKhZz4D7sE", "UdKhZz4D7sE", 1277, false, "/downloads/Factory_Monster/2025-08-09 $3000 Handmade Rug! Process of making Korean Traditional Character Rug/$3000 Handmade Rug! Process of making Korean Traditional Character Rug [UdKhZz4D7sE].mkv", false, 3, ~U[2025-08-09 10:26:00Z]] 08:27:22.223 [debug] QUERY OK source="sources" db=0.4ms idle=5.9ms UPDATE "sources" SET "last_indexed_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2025-12-23 08:27:22Z], ~U[2025-12-23 08:27:22Z], 3] 08:27:22.224 [debug] QUERY OK source="media_items" db=0.6ms 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")))) [3] 08:27:22.225 [debug] QUERY OK source="media_items" db=0.6ms 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")))) [3] 08:27:22.225 [debug] QUERY OK source="media_items" db=0.2ms idle=3.9ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [3] 08:27:22.227 [debug] QUERY OK source="tasks" db=0.2ms idle=2.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [7403, 3, ~U[2025-12-23 08:27:22Z], ~U[2025-12-23 08:27:22Z]] 08:27:22.227 [info] {"args":{"id":3},"id":7354,"meta":{},"state":"success","max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","duration":44703701,"event":"job:stop","queue_time":156250,"attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 08:27:45.707 [info] {"source":"oban","duration":1484,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:28:00.560 [info] {"source":"oban","duration":311,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:28:15.710 [info] {"source":"oban","duration":1646,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:28:45.713 [info] {"source":"oban","duration":1714,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:29:00.562 [info] {"source":"oban","duration":879,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:29:15.715 [info] {"source":"oban","duration":1328,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:29:45.718 [info] {"source":"oban","duration":1918,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":1} 08:30:00.564 [info] {"source":"oban","duration":534,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:30:15.720 [info] {"source":"oban","duration":1377,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:30:45.722 [info] {"source":"oban","duration":997,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:31:00.565 [info] {"source":"oban","duration":376,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:31:15.724 [info] {"source":"oban","duration":972,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:31:45.726 [info] {"source":"oban","duration":952,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:32:00.567 [info] {"source":"oban","duration":742,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:32:15.728 [info] {"source":"oban","duration":901,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:32:45.730 [info] {"source":"oban","duration":1186,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:33:00.568 [info] {"source":"oban","duration":285,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:33:15.733 [info] {"source":"oban","duration":1308,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:33:44.390 [info] {"args":{"id":2},"id":7355,"meta":{},"system_time":1766478824390495515,"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"]} 08:33:44.391 [debug] QUERY OK source="sources" db=0.2ms idle=725.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:33:44.391 [debug] QUERY OK source="settings" db=0.2ms idle=725.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:33:44.392 [debug] QUERY OK source="media_items" db=0.7ms idle=726.1ms 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")))) [2] 08:33:44.392 [debug] QUERY OK source="media_items" db=0.1ms idle=8.5ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [2] 08:33:44.393 [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] 08:33:44.393 [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 [] 08:33:44.393 [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 [] 08:33:44.395 [debug] QUERY OK source="media_items" db=1.5ms 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."source_id" = ?) ORDER BY m0."uploaded_at" DESC LIMIT 50 OFFSET 20 [2] 08:33:44.396 [debug] Running yt-dlp command for action: get_media_attributes_for_collection 08:33:44.397 [debug] Current batch of media processed. Will check again in 1000ms 08:33:44.397 [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 [] 08:33:44.397 [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 [] 08:33:44.397 [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 [] 08:33:44.397 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@FactoryTrip2022 --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/FactoryTrip2022/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/fa/c1/fac1d4dc910b42c730fccd195451dcac225374335caa000c235f0e0743a5642a.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/ac/d5/acd5c54507407fed6f8e058c558f9c950438e00a54a872192bc3c05decf363b5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 08:33:45.398 [debug] Current batch of media processed. Will check again in 1000ms 08:33:45.735 [info] {"source":"oban","duration":1148,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:33:46.399 [debug] Current batch of media processed. Will check again in 1000ms 08:33:47.400 [debug] Current batch of media processed. Will check again in 1000ms 08:33:48.401 [debug] Current batch of media processed. Will check again in 1000ms 08:33:49.403 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 / Top 10 Most-Watched Manufacturing Processes of 2025! Inside Korea’s Incredible Factories\n\n00:00 한국의 캠핑카 만드는 과정\n23:25 한국의 맷돌 만드는 과정\n39:36 한국의 낚시바늘 만드는 과정\n50:39 한국의 낚시대 만드는 과정\n1:06:53 한국의 목탁 만드는 과정\n1:22:06 한국의 레진 테이블 만드는 과정\n1:48:22 한국의 육포 만드는 과정\n1:59:34 한국의 멀티탭 만드는 과정\n2:10:38 한국의 비누 만드는 과정\n2:19:03 한국의 범종 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#캠핑카 #캠퍼 #맷돌 #낚시 #낚시용품 #낚시바늘 #낚시대 #목탁 #레진 #레진테이블 #테이블 #육포 #멀티탭 #비누 #범종 #식품공장 #목공 #우드워커 #공장 #공방 #기계 #전문가 #기술자 #장인 #메이킹 #제조 #생산 #제작 #camper #campervan #campingcar #milestone #milestones #stoneware #fishing #fishingequipment #fishinghook #fishingrod #fishingrods #moktak #woodenclapper #woodenfish #woodworking #woodwork #woodscraft #woodart #woodworkingart #woodcraft #resintable #woodtable #resinart #beefjerky #jerky #powerstrips #powerbar #extensioncord #soap #soaps #soapmaking #bell #bronzebell #templebells #templebell #casting #foodfactory #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "duration" => 9470, "filename" => "/downloads/FactoryTrip2022/2025-12-19 2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 ⧸ Inside Korea’s Incredible Factories/2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 ⧸ Inside Korea’s Incredible Factories [JndvLYRWlvY].mkv", "id" => "JndvLYRWlvY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=JndvLYRWlvY", "playlist_index" => 1, "timestamp" => 1766130600, "title" => "2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 / Inside Korea’s Incredible Factories", "upload_date" => "20251219"} 08:33:49.403 [debug] QUERY OK source="sources" db=0.3ms idle=1737.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [2] 08:33:49.404 [debug] QUERY OK source="sources" db=0.3ms idle=1738.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:33:49.405 [debug] QUERY OK source="media_items" db=0.5ms idle=1739.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-19 07:50:00Z], 2] 08:33:49.406 [debug] QUERY OK source="media_items" db=1.0ms idle=1013.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 / Top 10 Most-Watched Manufacturing Processes of 2025! Inside Korea’s Incredible Factories\n\n00:00 한국의 캠핑카 만드는 과정\n23:25 한국의 맷돌 만드는 과정\n39:36 한국의 낚시바늘 만드는 과정\n50:39 한국의 낚시대 만드는 과정\n1:06:53 한국의 목탁 만드는 과정\n1:22:06 한국의 레진 테이블 만드는 과정\n1:48:22 한국의 육포 만드는 과정\n1:59:34 한국의 멀티탭 만드는 과정\n2:10:38 한국의 비누 만드는 과정\n2:19:03 한국의 범종 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#캠핑카 #캠퍼 #맷돌 #낚시 #낚시용품 #낚시바늘 #낚시대 #목탁 #레진 #레진테이블 #테이블 #육포 #멀티탭 #비누 #범종 #식품공장 #목공 #우드워커 #공장 #공방 #기계 #전문가 #기술자 #장인 #메이킹 #제조 #생산 #제작 #camper #campervan #campingcar #milestone #milestones #stoneware #fishing #fishingequipment #fishinghook #fishingrod #fishingrods #moktak #woodenclapper #woodenfish #woodworking #woodwork #woodscraft #woodart #woodworkingart #woodcraft #resintable #woodtable #resinart #beefjerky #jerky #powerstrips #powerbar #extensioncord #soap #soaps #soapmaking #bell #bronzebell #templebells #templebell #casting #foodfactory #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 / Inside Korea’s Incredible Factories", "12d3c7d6-4005-4c40-903a-7b867782d6be", "https://www.youtube.com/watch?v=JndvLYRWlvY", "JndvLYRWlvY", false, 9470, false, 1, "/downloads/FactoryTrip2022/2025-12-19 2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 ⧸ Inside Korea’s Incredible Factories/2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 ⧸ Inside Korea’s Incredible Factories [JndvLYRWlvY].mkv", false, false, 2, [], 98, ~U[2025-12-19 07:50:00Z], ~U[2025-12-23 08:33:49Z], ~U[2025-12-23 08:33:49Z], "2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 / Top 10 Most-Watched Manufacturing Processes of 2025! Inside Korea’s Incredible Factories\n\n00:00 한국의 캠핑카 만드는 과정\n23:25 한국의 맷돌 만드는 과정\n39:36 한국의 낚시바늘 만드는 과정\n50:39 한국의 낚시대 만드는 과정\n1:06:53 한국의 목탁 만드는 과정\n1:22:06 한국의 레진 테이블 만드는 과정\n1:48:22 한국의 육포 만드는 과정\n1:59:34 한국의 멀티탭 만드는 과정\n2:10:38 한국의 비누 만드는 과정\n2:19:03 한국의 범종 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#캠핑카 #캠퍼 #맷돌 #낚시 #낚시용품 #낚시바늘 #낚시대 #목탁 #레진 #레진테이블 #테이블 #육포 #멀티탭 #비누 #범종 #식품공장 #목공 #우드워커 #공장 #공방 #기계 #전문가 #기술자 #장인 #메이킹 #제조 #생산 #제작 #camper #campervan #campingcar #milestone #milestones #stoneware #fishing #fishingequipment #fishinghook #fishingrod #fishingrods #moktak #woodenclapper #woodenfish #woodworking #woodwork #woodscraft #woodart #woodworkingart #woodcraft #resintable #woodtable #resinart #beefjerky #jerky #powerstrips #powerbar #extensioncord #soap #soaps #soapmaking #bell #bronzebell #templebells #templebell #casting #foodfactory #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 / Inside Korea’s Incredible Factories", "https://www.youtube.com/watch?v=JndvLYRWlvY", "JndvLYRWlvY", 9470, false, "/downloads/FactoryTrip2022/2025-12-19 2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 ⧸ Inside Korea’s Incredible Factories/2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 ⧸ Inside Korea’s Incredible Factories [JndvLYRWlvY].mkv", false, 2, ~U[2025-12-19 07:50:00Z]] 08:33:49.407 [debug] QUERY OK source="sources" db=0.1ms idle=12.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:33:49.407 [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] 08:33:49.408 [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 [27892] 08:33:49.408 [debug] Current batch of media processed. Will check again in 1000ms 08:33:50.409 [debug] Current batch of media processed. Will check again in 1000ms 08:33:51.410 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#프라이팬 #주방용품 #공장 #냄비 #후라이팬 #팬 #웍팬 #주방도구 #키친 #델라고 #러브쿡 #오일마스터 #기술자 #제조 #과정 #생산 #제작 #메이킹 #pan #frypan #fryingpan #cookingpan #cookware #kitchenware #pot #frypanmaking #cookwaremaking #skillet #dellago #oilmaster #lovecook #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 741, "filename" => "/downloads/FactoryTrip2022/2025-12-12 10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 ⧸ Korean cookware factory/10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 ⧸ Korean cookware factory [Qa2-1g1GPN4].mkv", "id" => "Qa2-1g1GPN4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Qa2-1g1GPN4", "playlist_index" => 2, "timestamp" => 1765525801, "title" => "10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 / Korean cookware factory", "upload_date" => "20251212"} 08:33:51.411 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=745.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 (?)) [2] 08:33:51.411 [debug] QUERY OK source="sources" db=0.1ms idle=745.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:33:51.412 [debug] QUERY OK source="media_items" db=0.6ms idle=746.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-12 07:50:01Z], 2] 08:33:51.413 [debug] QUERY OK source="media_items" db=0.8ms idle=747.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#프라이팬 #주방용품 #공장 #냄비 #후라이팬 #팬 #웍팬 #주방도구 #키친 #델라고 #러브쿡 #오일마스터 #기술자 #제조 #과정 #생산 #제작 #메이킹 #pan #frypan #fryingpan #cookingpan #cookware #kitchenware #pot #frypanmaking #cookwaremaking #skillet #dellago #oilmaster #lovecook #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 / Korean cookware factory", "bf5abcf0-bf6c-43c1-b84f-53c9332ce1f1", "https://www.youtube.com/watch?v=Qa2-1g1GPN4", "Qa2-1g1GPN4", false, 741, false, 2, "/downloads/FactoryTrip2022/2025-12-12 10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 ⧸ Korean cookware factory/10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 ⧸ Korean cookware factory [Qa2-1g1GPN4].mkv", false, false, 2, [], 98, ~U[2025-12-12 07:50:01Z], ~U[2025-12-23 08:33:51Z], ~U[2025-12-23 08:33:51Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#프라이팬 #주방용품 #공장 #냄비 #후라이팬 #팬 #웍팬 #주방도구 #키친 #델라고 #러브쿡 #오일마스터 #기술자 #제조 #과정 #생산 #제작 #메이킹 #pan #frypan #fryingpan #cookingpan #cookware #kitchenware #pot #frypanmaking #cookwaremaking #skillet #dellago #oilmaster #lovecook #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 / Korean cookware factory", "https://www.youtube.com/watch?v=Qa2-1g1GPN4", "Qa2-1g1GPN4", 741, false, "/downloads/FactoryTrip2022/2025-12-12 10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 ⧸ Korean cookware factory/10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 ⧸ Korean cookware factory [Qa2-1g1GPN4].mkv", false, 2, ~U[2025-12-12 07:50:01Z]] 08:33:51.414 [debug] QUERY OK source="sources" db=0.1ms 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" = ?) [2] 08:33:51.414 [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] 08:33:51.414 [debug] QUERY OK source="media_items" db=0.2ms idle=3.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [25948] 08:33:51.415 [debug] Current batch of media processed. Will check again in 1000ms 08:33:52.415 [debug] Current batch of media processed. Will check again in 1000ms 08:33:53.416 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#의자 #사무용의자 #공장 #사무용가구 #컴퓨터의자 #인테리어의자 #카페의자 #책상의자 #메쉬의자 #학생의자 #스툴 #의자추천 #사출 #DSP #ERMON #기술자 #제조 #과정 #생산 #제작 #메이킹 #chair #chairs #officechair #officechairs #computerchair #chairmaking #injection #gamingchair #executivechair #stool #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 696, "filename" => "/downloads/FactoryTrip2022/2025-12-05 30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 ⧸ Korean Chair Factory/30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 ⧸ Korean Chair Factory [jF72xiNqq6Q].mkv", "id" => "jF72xiNqq6Q", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=jF72xiNqq6Q", "playlist_index" => 3, "timestamp" => 1764921000, "title" => "30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 / Korean Chair Factory", "upload_date" => "20251205"} 08:33:53.417 [debug] QUERY OK source="sources" db=0.2ms idle=751.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [2] 08:33:53.418 [debug] QUERY OK source="sources" db=0.2ms idle=752.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:33:53.419 [debug] QUERY OK source="media_items" db=0.6ms idle=752.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-05 07:50:00Z], 2] 08:33:53.420 [debug] QUERY OK source="media_items" db=1.0ms idle=753.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#의자 #사무용의자 #공장 #사무용가구 #컴퓨터의자 #인테리어의자 #카페의자 #책상의자 #메쉬의자 #학생의자 #스툴 #의자추천 #사출 #DSP #ERMON #기술자 #제조 #과정 #생산 #제작 #메이킹 #chair #chairs #officechair #officechairs #computerchair #chairmaking #injection #gamingchair #executivechair #stool #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 / Korean Chair Factory", "de9203e9-d089-4329-be6c-f2547446bccb", "https://www.youtube.com/watch?v=jF72xiNqq6Q", "jF72xiNqq6Q", false, 696, false, 3, "/downloads/FactoryTrip2022/2025-12-05 30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 ⧸ Korean Chair Factory/30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 ⧸ Korean Chair Factory [jF72xiNqq6Q].mkv", false, false, 2, [], 98, ~U[2025-12-05 07:50:00Z], ~U[2025-12-23 08:33:53Z], ~U[2025-12-23 08:33:53Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#의자 #사무용의자 #공장 #사무용가구 #컴퓨터의자 #인테리어의자 #카페의자 #책상의자 #메쉬의자 #학생의자 #스툴 #의자추천 #사출 #DSP #ERMON #기술자 #제조 #과정 #생산 #제작 #메이킹 #chair #chairs #officechair #officechairs #computerchair #chairmaking #injection #gamingchair #executivechair #stool #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 / Korean Chair Factory", "https://www.youtube.com/watch?v=jF72xiNqq6Q", "jF72xiNqq6Q", 696, false, "/downloads/FactoryTrip2022/2025-12-05 30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 ⧸ Korean Chair Factory/30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 ⧸ Korean Chair Factory [jF72xiNqq6Q].mkv", false, 2, ~U[2025-12-05 07:50:00Z]] 08:33:53.420 [debug] QUERY OK source="sources" db=0.1ms idle=17.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:33:53.421 [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] 08:33:53.421 [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 [23252] 08:33:53.421 [debug] Current batch of media processed. Will check again in 1000ms 08:33:54.422 [debug] Current batch of media processed. Will check again in 1000ms 08:33:55.423 [debug] Current batch of media processed. Will check again in 1000ms 08:33:56.425 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n\n#가죽 #가죽가방 #공방 #가죽공방 #남자가방 #서류가방 #가죽제품 #가죽소품 #가죽지갑 #카드지갑 #아스툴라 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #leather #leathercraft #leatherbag #leatherbags #leatherworking #leatherfashion #leatherwork #leatherworker #bagmaking #briefcase #briefbag #businesscase #korean #handmade #handmadecraft #handmadebag #machine #making #makingvideos #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 1105, "filename" => "/downloads/FactoryTrip2022/2025-11-28 한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 ⧸ Korean Leather Workshop/한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 ⧸ Korean Leather Workshop [sslv-jLNb0Y].mkv", "id" => "sslv-jLNb0Y", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=sslv-jLNb0Y", "playlist_index" => 4, "timestamp" => 1764316201, "title" => "한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 / Korean Leather Workshop", "upload_date" => "20251128"} 08:33:56.425 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1759.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [2] 08:33:56.426 [debug] QUERY OK source="sources" db=0.2ms idle=1760.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:33:56.427 [debug] QUERY OK source="media_items" db=0.7ms idle=1760.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-28 07:50:01Z], 2] 08:33:56.428 [debug] QUERY OK source="media_items" db=0.8ms idle=1020.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n\n#가죽 #가죽가방 #공방 #가죽공방 #남자가방 #서류가방 #가죽제품 #가죽소품 #가죽지갑 #카드지갑 #아스툴라 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #leather #leathercraft #leatherbag #leatherbags #leatherworking #leatherfashion #leatherwork #leatherworker #bagmaking #briefcase #briefbag #businesscase #korean #handmade #handmadecraft #handmadebag #machine #making #makingvideos #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 / Korean Leather Workshop", "783a88a1-3186-4d56-b105-3a89331426ad", "https://www.youtube.com/watch?v=sslv-jLNb0Y", "sslv-jLNb0Y", false, 1105, false, 4, "/downloads/FactoryTrip2022/2025-11-28 한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 ⧸ Korean Leather Workshop/한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 ⧸ Korean Leather Workshop [sslv-jLNb0Y].mkv", false, false, 2, [], 98, ~U[2025-11-28 07:50:01Z], ~U[2025-12-23 08:33:56Z], ~U[2025-12-23 08:33:56Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n\n#가죽 #가죽가방 #공방 #가죽공방 #남자가방 #서류가방 #가죽제품 #가죽소품 #가죽지갑 #카드지갑 #아스툴라 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #leather #leathercraft #leatherbag #leatherbags #leatherworking #leatherfashion #leatherwork #leatherworker #bagmaking #briefcase #briefbag #businesscase #korean #handmade #handmadecraft #handmadebag #machine #making #makingvideos #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 / Korean Leather Workshop", "https://www.youtube.com/watch?v=sslv-jLNb0Y", "sslv-jLNb0Y", 1105, false, "/downloads/FactoryTrip2022/2025-11-28 한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 ⧸ Korean Leather Workshop/한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 ⧸ Korean Leather Workshop [sslv-jLNb0Y].mkv", false, 2, ~U[2025-11-28 07:50:01Z]] 08:33:56.429 [debug] QUERY OK source="sources" db=0.2ms idle=20.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:33:56.429 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:33:56.430 [debug] QUERY OK source="media_items" db=0.3ms idle=3.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [21936] 08:33:56.430 [debug] Current batch of media processed. Will check again in 1000ms 08:33:57.431 [debug] Current batch of media processed. Will check again in 1000ms 08:33:58.432 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 / A Full Look Inside Korea’s Packaging Manufacturing\n\n00:00 한국의 테이프 만드는 과정\n10:26 한국의 종이용기 만드는 과정\n23:35 한국의 비닐봉지 만드는 과정\n31:14 한국의 골판지 박스 자동으로 만드는 과정\n38:14 한국의 유리병 만드는 과정\n44:58 한국의 종이가방 만드는 과정\n55:27 한국의 금속 캔 만드는 과정\n1:04:16 한국의 라벨 만드는 과정\n1:18:32 한국의 로프 만드는 과정\n1:27:22 한국의 포장박스 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#포장 #패키지 #공장 #테이프 #종이컵 #종이용기 #비닐 #비닐봉지 #박스 #골판지박스 #종이박스 #포장박스 #유리용기 #유리병 #종이가방 #쇼핑백 #금속용기 #금속캔 #제관 #라벨 #스티커 #로프 #박스제작 #포장재 #기계 #전문가 #기술자 #장인 #제작 #packing #packaging #package #pack #packagingmachine #papercup #papercupmachine #paperpackaging #papercontainer #paperbag #paperbagmachine #paperbags #paperbagmakingmachine #paperbagmaking #plasticbag #plasticbagmakingmachine #plasticbags #rope #glassbottles #paperbox #cardboardpackaging #cardboardbox #label #labelmachine #labelmaking #metalpackaging #can #metalcan #steelcan #tincan #tincans #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "duration" => 5794, "filename" => "/downloads/FactoryTrip2022/2025-11-21 포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 ⧸ Inside Korea’s Packaging Factories/포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 ⧸ Inside Korea’s Packaging Factories [6heSlmklMxM].mkv", "id" => "6heSlmklMxM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=6heSlmklMxM", "playlist_index" => 5, "timestamp" => 1763711401, "title" => "포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 / Inside Korea’s Packaging Factories", "upload_date" => "20251121"} 08:33:58.433 [debug] QUERY OK source="sources" db=0.2ms idle=767.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 (?)) [2] 08:33:58.433 [debug] QUERY OK source="sources" db=0.1ms idle=767.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:33:58.434 [debug] QUERY OK source="media_items" db=0.6ms idle=768.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-21 07:50:01Z], 2] 08:33:58.436 [debug] QUERY OK source="media_items" db=0.8ms idle=769.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 / A Full Look Inside Korea’s Packaging Manufacturing\n\n00:00 한국의 테이프 만드는 과정\n10:26 한국의 종이용기 만드는 과정\n23:35 한국의 비닐봉지 만드는 과정\n31:14 한국의 골판지 박스 자동으로 만드는 과정\n38:14 한국의 유리병 만드는 과정\n44:58 한국의 종이가방 만드는 과정\n55:27 한국의 금속 캔 만드는 과정\n1:04:16 한국의 라벨 만드는 과정\n1:18:32 한국의 로프 만드는 과정\n1:27:22 한국의 포장박스 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#포장 #패키지 #공장 #테이프 #종이컵 #종이용기 #비닐 #비닐봉지 #박스 #골판지박스 #종이박스 #포장박스 #유리용기 #유리병 #종이가방 #쇼핑백 #금속용기 #금속캔 #제관 #라벨 #스티커 #로프 #박스제작 #포장재 #기계 #전문가 #기술자 #장인 #제작 #packing #packaging #package #pack #packagingmachine #papercup #papercupmachine #paperpackaging #papercontainer #paperbag #paperbagmachine #paperbags #paperbagmakingmachine #paperbagmaking #plasticbag #plasticbagmakingmachine #plasticbags #rope #glassbottles #paperbox #cardboardpackaging #cardboardbox #label #labelmachine #labelmaking #metalpackaging #can #metalcan #steelcan #tincan #tincans #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 / Inside Korea’s Packaging Factories", "faa907e6-7bc3-44a8-ae7f-10ff4a00712f", "https://www.youtube.com/watch?v=6heSlmklMxM", "6heSlmklMxM", false, 5794, false, 5, "/downloads/FactoryTrip2022/2025-11-21 포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 ⧸ Inside Korea’s Packaging Factories/포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 ⧸ Inside Korea’s Packaging Factories [6heSlmklMxM].mkv", false, false, 2, [], 98, ~U[2025-11-21 07:50:01Z], ~U[2025-12-23 08:33:58Z], ~U[2025-12-23 08:33:58Z], "포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 / A Full Look Inside Korea’s Packaging Manufacturing\n\n00:00 한국의 테이프 만드는 과정\n10:26 한국의 종이용기 만드는 과정\n23:35 한국의 비닐봉지 만드는 과정\n31:14 한국의 골판지 박스 자동으로 만드는 과정\n38:14 한국의 유리병 만드는 과정\n44:58 한국의 종이가방 만드는 과정\n55:27 한국의 금속 캔 만드는 과정\n1:04:16 한국의 라벨 만드는 과정\n1:18:32 한국의 로프 만드는 과정\n1:27:22 한국의 포장박스 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#포장 #패키지 #공장 #테이프 #종이컵 #종이용기 #비닐 #비닐봉지 #박스 #골판지박스 #종이박스 #포장박스 #유리용기 #유리병 #종이가방 #쇼핑백 #금속용기 #금속캔 #제관 #라벨 #스티커 #로프 #박스제작 #포장재 #기계 #전문가 #기술자 #장인 #제작 #packing #packaging #package #pack #packagingmachine #papercup #papercupmachine #paperpackaging #papercontainer #paperbag #paperbagmachine #paperbags #paperbagmakingmachine #paperbagmaking #plasticbag #plasticbagmakingmachine #plasticbags #rope #glassbottles #paperbox #cardboardpackaging #cardboardbox #label #labelmachine #labelmaking #metalpackaging #can #metalcan #steelcan #tincan #tincans #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 / Inside Korea’s Packaging Factories", "https://www.youtube.com/watch?v=6heSlmklMxM", "6heSlmklMxM", 5794, false, "/downloads/FactoryTrip2022/2025-11-21 포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 ⧸ Inside Korea’s Packaging Factories/포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 ⧸ Inside Korea’s Packaging Factories [6heSlmklMxM].mkv", false, 2, ~U[2025-11-21 07:50:01Z]] 08:33:58.436 [debug] QUERY OK source="sources" db=0.2ms idle=23.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:33:58.436 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:33:58.437 [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 [20614] 08:33:58.437 [debug] Current batch of media processed. Will check again in 1000ms 08:33:59.438 [debug] Current batch of media processed. Will check again in 1000ms 08:34:00.439 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#낚시 #낚시바늘 #공장 #낚시용품 #피싱 #코리아후크 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #fishing #fishingequipment #hook #fishinghooks #fishinghook #hookfishing #hook_fishing #hooker #heattreatment #hookmaking #koreahook #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 686, "filename" => "/downloads/FactoryTrip2022/2025-11-14 작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 ⧸ Korean Fishing Hook Factory/작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 ⧸ Korean Fishing Hook Factory [69UGVR66ngs].mkv", "id" => "69UGVR66ngs", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=69UGVR66ngs", "playlist_index" => 6, "timestamp" => 1763106600, "title" => "작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 / Korean Fishing Hook Factory", "upload_date" => "20251114"} 08:34:00.440 [debug] QUERY OK source="sources" db=0.2ms idle=774.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [2] 08:34:00.440 [debug] QUERY OK source="sources" db=0.2ms idle=774.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:00.441 [debug] QUERY OK source="media_items" db=0.7ms idle=775.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-14 07:50:00Z], 2] 08:34:00.443 [debug] QUERY OK source="media_items" db=0.8ms idle=776.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#낚시 #낚시바늘 #공장 #낚시용품 #피싱 #코리아후크 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #fishing #fishingequipment #hook #fishinghooks #fishinghook #hookfishing #hook_fishing #hooker #heattreatment #hookmaking #koreahook #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 / Korean Fishing Hook Factory", "8b5fbb2d-8afa-4992-8301-f796fc7d7cd3", "https://www.youtube.com/watch?v=69UGVR66ngs", "69UGVR66ngs", false, 686, false, 6, "/downloads/FactoryTrip2022/2025-11-14 작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 ⧸ Korean Fishing Hook Factory/작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 ⧸ Korean Fishing Hook Factory [69UGVR66ngs].mkv", false, false, 2, [], 98, ~U[2025-11-14 07:50:00Z], ~U[2025-12-23 08:34:00Z], ~U[2025-12-23 08:34:00Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#낚시 #낚시바늘 #공장 #낚시용품 #피싱 #코리아후크 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #fishing #fishingequipment #hook #fishinghooks #fishinghook #hookfishing #hook_fishing #hooker #heattreatment #hookmaking #koreahook #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 / Korean Fishing Hook Factory", "https://www.youtube.com/watch?v=69UGVR66ngs", "69UGVR66ngs", 686, false, "/downloads/FactoryTrip2022/2025-11-14 작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 ⧸ Korean Fishing Hook Factory/작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 ⧸ Korean Fishing Hook Factory [69UGVR66ngs].mkv", false, 2, ~U[2025-11-14 07:50:00Z]] 08:34:00.443 [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" = ?) [2] 08:34:00.444 [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] 08:34:00.444 [debug] QUERY OK source="media_items" db=0.4ms 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 [19298] 08:34:00.444 [debug] Current batch of media processed. Will check again in 1000ms 08:34:00.570 [info] {"source":"oban","duration":570,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:34:01.446 [debug] Current batch of media processed. Will check again in 1000ms 08:34:02.447 [debug] Current batch of media processed. Will check again in 1000ms 08:34:03.448 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#밸브 #주물 #공장 #이형관 #맨홀뚜껑 #상하수도 #주철 #주조 #수도용 #산업용 #세계주철 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #valve #valvefactory #watervalve #gatevalve #gatevalves #casting #cast #iron #castiron #valvemanufacturer #valvemaking #fitting #segye #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 691, "filename" => "/downloads/FactoryTrip2022/2025-11-07 누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 ⧸ Korean Valve Factory/누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 ⧸ Korean Valve Factory [YM3ToKKMIZs].mkv", "id" => "YM3ToKKMIZs", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=YM3ToKKMIZs", "playlist_index" => 7, "timestamp" => 1762502449, "title" => "누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 / Korean Valve Factory", "upload_date" => "20251107"} 08:34:03.449 [debug] QUERY OK source="sources" db=0.2ms idle=1783.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 (?)) [2] 08:34:03.449 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=1783.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:03.450 [debug] QUERY OK source="media_items" db=0.7ms idle=1784.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-07 08:00:49Z], 2] 08:34:03.452 [debug] QUERY OK source="media_items" db=0.8ms idle=1030.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#밸브 #주물 #공장 #이형관 #맨홀뚜껑 #상하수도 #주철 #주조 #수도용 #산업용 #세계주철 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #valve #valvefactory #watervalve #gatevalve #gatevalves #casting #cast #iron #castiron #valvemanufacturer #valvemaking #fitting #segye #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 / Korean Valve Factory", "9f369242-3085-4609-925f-34d2f604a2ef", "https://www.youtube.com/watch?v=YM3ToKKMIZs", "YM3ToKKMIZs", false, 691, false, 7, "/downloads/FactoryTrip2022/2025-11-07 누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 ⧸ Korean Valve Factory/누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 ⧸ Korean Valve Factory [YM3ToKKMIZs].mkv", false, false, 2, [], 98, ~U[2025-11-07 08:00:49Z], ~U[2025-12-23 08:34:03Z], ~U[2025-12-23 08:34:03Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#밸브 #주물 #공장 #이형관 #맨홀뚜껑 #상하수도 #주철 #주조 #수도용 #산업용 #세계주철 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #valve #valvefactory #watervalve #gatevalve #gatevalves #casting #cast #iron #castiron #valvemanufacturer #valvemaking #fitting #segye #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 / Korean Valve Factory", "https://www.youtube.com/watch?v=YM3ToKKMIZs", "YM3ToKKMIZs", 691, false, "/downloads/FactoryTrip2022/2025-11-07 누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 ⧸ Korean Valve Factory/누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 ⧸ Korean Valve Factory [YM3ToKKMIZs].mkv", false, 2, ~U[2025-11-07 08:00:49Z]] 08:34:03.452 [debug] QUERY OK source="sources" db=0.2ms idle=29.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:03.452 [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] 08:34:03.453 [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 [18161] 08:34:03.453 [debug] Current batch of media processed. Will check again in 1000ms 08:34:04.454 [debug] Current batch of media processed. Will check again in 1000ms 08:34:05.455 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#뚝배기 #주방용품 #공장 #업소용 #내열도자기 #도기 #세라믹 #솥 #냄비 #경산세라믹 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #ttukbaegi #cookware #cookwares #kitchenware #kitchenwares #ceramicware #pot #claypot #claypotmaking #potmaking #ceramicpots #ceramicpot #ceramicfactory #earthenware #dishware #porcelain #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 660, "filename" => "/downloads/FactoryTrip2022/2025-10-31 한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 ⧸ Korean Clay Pot Factory/한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 ⧸ Korean Clay Pot Factory [DMIGlU5DaZI].mkv", "id" => "DMIGlU5DaZI", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=DMIGlU5DaZI", "playlist_index" => 8, "timestamp" => 1761897001, "title" => "한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 / Korean Clay Pot Factory", "upload_date" => "20251031"} 08:34:05.456 [debug] QUERY OK source="sources" db=0.2ms idle=790.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [2] 08:34:05.456 [debug] QUERY OK source="sources" db=0.2ms idle=790.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:05.457 [debug] QUERY OK source="media_items" db=0.7ms idle=791.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-31 07:50:01Z], 2] 08:34:05.459 [debug] QUERY OK source="media_items" db=1.0ms idle=792.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#뚝배기 #주방용품 #공장 #업소용 #내열도자기 #도기 #세라믹 #솥 #냄비 #경산세라믹 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #ttukbaegi #cookware #cookwares #kitchenware #kitchenwares #ceramicware #pot #claypot #claypotmaking #potmaking #ceramicpots #ceramicpot #ceramicfactory #earthenware #dishware #porcelain #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 / Korean Clay Pot Factory", "9c817075-e007-4cd3-9230-9eeee2fccdaf", "https://www.youtube.com/watch?v=DMIGlU5DaZI", "DMIGlU5DaZI", false, 660, false, 8, "/downloads/FactoryTrip2022/2025-10-31 한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 ⧸ Korean Clay Pot Factory/한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 ⧸ Korean Clay Pot Factory [DMIGlU5DaZI].mkv", false, false, 2, [], 98, ~U[2025-10-31 07:50:01Z], ~U[2025-12-23 08:34:05Z], ~U[2025-12-23 08:34:05Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#뚝배기 #주방용품 #공장 #업소용 #내열도자기 #도기 #세라믹 #솥 #냄비 #경산세라믹 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #ttukbaegi #cookware #cookwares #kitchenware #kitchenwares #ceramicware #pot #claypot #claypotmaking #potmaking #ceramicpots #ceramicpot #ceramicfactory #earthenware #dishware #porcelain #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 / Korean Clay Pot Factory", "https://www.youtube.com/watch?v=DMIGlU5DaZI", "DMIGlU5DaZI", 660, false, "/downloads/FactoryTrip2022/2025-10-31 한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 ⧸ Korean Clay Pot Factory/한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 ⧸ Korean Clay Pot Factory [DMIGlU5DaZI].mkv", false, 2, ~U[2025-10-31 07:50:01Z]] 08:34:05.459 [debug] QUERY OK source="sources" db=0.2ms idle=32.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:05.459 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:34:05.460 [debug] QUERY OK source="media_items" db=0.3ms idle=3.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [16829] 08:34:05.460 [debug] Current batch of media processed. Will check again in 1000ms 08:34:06.461 [debug] Current batch of media processed. Will check again in 1000ms 08:34:07.462 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "한 땀 한 땀, 세월이 만든 예술! 오직 손끝으로 완성된 세월의 작품. 한국 장인들의 전통 공예 몰아보기 / Korean Traditional Craft Binge Watch\n\n00:00 한국의 은주전자 만드는 과정\n23:39 한국의 전통 탈 만드는 과정\n39:23 한국의 범종 만드는 과정\n58:06 한국의 악기 소금 만드는 과정\n1:12:37 한국의 은장도 만드는 과정\n1:30:06 한국의 항아리 만드는 과정\n1:47:20 한국의 유기 그릇 만드는 과정\n1:55:40 한국의 화각공예품 만드는 과정\n2:04:11 한국의 한복 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#전통 #수작업 #장인 #공예 #공예품 #은주전자 #탈 #범종 #악기 #관악기 #소금 #은장도 #토기 #항아리 #유기 #놋그릇 #식기 #화각공예 #한복 #한복 #생산 #과정 #제작 #나무 #목공 #목공예 #수제 #핸드메이드 #기계 #전문가 #기술자 #제작 #silverkettle #silvercrafts #silver #woodworking #wood #woodcraft #woodwork #woodcarving #wooden #woodscraft #woodart #woods #woodworkingart #woodproducts #woodworker #woodworkingvideo #traditional #traditionalmasks #mask #woodenmask #brassitems #bell #hangingbell #bellmaking #brassbell #greatbell #temple #templebells #templebell #buddhistbell #churchbells #largebell #instruments #sogeum #windinstrument #bambooflute #traditionalinstruments #brassware #eunjangdo #silverknife #knifemaking #knife #knifesmith #blacksmith #traditionalknife #earthenware #earthenpot #jar #oxhorn #horn #hanbok #koreanstyle #making #production #korean #craft #crafts #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #master #process #asmr", "duration" => 8591, "filename" => "/downloads/FactoryTrip2022/2025-10-23 한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 ⧸ Korean Traditional Craft Compilation/한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 ⧸ Korean Traditional Craft Compilation [EaHG0sIgmsM].mkv", "id" => "EaHG0sIgmsM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=EaHG0sIgmsM", "playlist_index" => 9, "timestamp" => 1761206427, "title" => "한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 / Korean Traditional Craft Compilation", "upload_date" => "20251023"} 08:34:07.463 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=797.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 (?)) [2] 08:34:07.463 [debug] QUERY OK source="sources" db=0.1ms idle=798.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:07.464 [debug] QUERY OK source="media_items" db=0.6ms idle=798.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-23 08:00:27Z], 2] 08:34:07.467 [debug] QUERY OK source="media_items" db=2.2ms idle=799.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["한 땀 한 땀, 세월이 만든 예술! 오직 손끝으로 완성된 세월의 작품. 한국 장인들의 전통 공예 몰아보기 / Korean Traditional Craft Binge Watch\n\n00:00 한국의 은주전자 만드는 과정\n23:39 한국의 전통 탈 만드는 과정\n39:23 한국의 범종 만드는 과정\n58:06 한국의 악기 소금 만드는 과정\n1:12:37 한국의 은장도 만드는 과정\n1:30:06 한국의 항아리 만드는 과정\n1:47:20 한국의 유기 그릇 만드는 과정\n1:55:40 한국의 화각공예품 만드는 과정\n2:04:11 한국의 한복 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#전통 #수작업 #장인 #공예 #공예품 #은주전자 #탈 #범종 #악기 #관악기 #소금 #은장도 #토기 #항아리 #유기 #놋그릇 #식기 #화각공예 #한복 #한복 #생산 #과정 #제작 #나무 #목공 #목공예 #수제 #핸드메이드 #기계 #전문가 #기술자 #제작 #silverkettle #silvercrafts #silver #woodworking #wood #woodcraft #woodwork #woodcarving #wooden #woodscraft #woodart #woods #woodworkingart #woodproducts #woodworker #woodworkingvideo #traditional #traditionalmasks #mask #woodenmask #brassitems #bell #hangingbell #bellmaking #brassbell #greatbell #temple #templebells #templebell #buddhistbell #churchbells #largebell #instruments #sogeum #windinstrument #bambooflute #traditionalinstruments #brassware #eunjangdo #silverknife #knifemaking #knife #knifesmith #blacksmith #traditionalknife #earthenware #earthenpot #jar #oxhorn #horn #hanbok #koreanstyle #making #production #korean #craft #crafts #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #master #process #asmr", "한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 / Korean Traditional Craft Compilation", "ce961076-aa8b-4f94-9e69-df5050679edf", "https://www.youtube.com/watch?v=EaHG0sIgmsM", "EaHG0sIgmsM", false, 8591, false, 9, "/downloads/FactoryTrip2022/2025-10-23 한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 ⧸ Korean Traditional Craft Compilation/한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 ⧸ Korean Traditional Craft Compilation [EaHG0sIgmsM].mkv", false, false, 2, [], 98, ~U[2025-10-23 08:00:27Z], ~U[2025-12-23 08:34:07Z], ~U[2025-12-23 08:34:07Z], "한 땀 한 땀, 세월이 만든 예술! 오직 손끝으로 완성된 세월의 작품. 한국 장인들의 전통 공예 몰아보기 / Korean Traditional Craft Binge Watch\n\n00:00 한국의 은주전자 만드는 과정\n23:39 한국의 전통 탈 만드는 과정\n39:23 한국의 범종 만드는 과정\n58:06 한국의 악기 소금 만드는 과정\n1:12:37 한국의 은장도 만드는 과정\n1:30:06 한국의 항아리 만드는 과정\n1:47:20 한국의 유기 그릇 만드는 과정\n1:55:40 한국의 화각공예품 만드는 과정\n2:04:11 한국의 한복 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#전통 #수작업 #장인 #공예 #공예품 #은주전자 #탈 #범종 #악기 #관악기 #소금 #은장도 #토기 #항아리 #유기 #놋그릇 #식기 #화각공예 #한복 #한복 #생산 #과정 #제작 #나무 #목공 #목공예 #수제 #핸드메이드 #기계 #전문가 #기술자 #제작 #silverkettle #silvercrafts #silver #woodworking #wood #woodcraft #woodwork #woodcarving #wooden #woodscraft #woodart #woods #woodworkingart #woodproducts #woodworker #woodworkingvideo #traditional #traditionalmasks #mask #woodenmask #brassitems #bell #hangingbell #bellmaking #brassbell #greatbell #temple #templebells #templebell #buddhistbell #churchbells #largebell #instruments #sogeum #windinstrument #bambooflute #traditionalinstruments #brassware #eunjangdo #silverknife #knifemaking #knife #knifesmith #blacksmith #traditionalknife #earthenware #earthenpot #jar #oxhorn #horn #hanbok #koreanstyle #making #production #korean #craft #crafts #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #master #process #asmr", "한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 / Korean Traditional Craft Compilation", "https://www.youtube.com/watch?v=EaHG0sIgmsM", "EaHG0sIgmsM", 8591, false, "/downloads/FactoryTrip2022/2025-10-23 한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 ⧸ Korean Traditional Craft Compilation/한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 ⧸ Korean Traditional Craft Compilation [EaHG0sIgmsM].mkv", false, 2, ~U[2025-10-23 08:00:27Z]] 08:34:07.468 [debug] QUERY OK source="sources" db=0.2ms idle=37.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:07.468 [debug] QUERY OK source="media_profiles" db=0.1ms idle=4.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:34:07.468 [debug] QUERY OK source="media_items" db=0.2ms idle=4.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 [15309] 08:34:07.469 [debug] Current batch of media processed. Will check again in 1000ms 08:34:08.469 [debug] Current batch of media processed. Will check again in 1000ms 08:34:09.470 [debug] Current batch of media processed. Will check again in 1000ms 08:34:10.472 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#테이프 #점착테이프 #공장 #패키지 #포장용테이프 #opp테이프 #박스테이프 #컬러테이프 #박스포장 #원준테이프 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #tape #tapes #packingtape #packagingtape #adhesivetapes #adhesivetape #tapemaking #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 647, "filename" => "/downloads/FactoryTrip2022/2025-10-17 붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 ⧸ Korean Tape Factory/붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 ⧸ Korean Tape Factory [sGppaFD-3-A].mkv", "id" => "sGppaFD-3-A", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=sGppaFD-3-A", "playlist_index" => 10, "timestamp" => 1760687701, "title" => "붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 / Korean Tape Factory", "upload_date" => "20251017"} 08:34:10.473 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=1806.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [2] 08:34:10.474 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=1808.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:10.476 [debug] QUERY OK source="media_items" db=1.0ms queue=0.4ms idle=1809.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-17 07:55:01Z], 2] 08:34:10.487 [debug] QUERY OK source="media_items" db=8.7ms queue=0.1ms idle=1044.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#테이프 #점착테이프 #공장 #패키지 #포장용테이프 #opp테이프 #박스테이프 #컬러테이프 #박스포장 #원준테이프 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #tape #tapes #packingtape #packagingtape #adhesivetapes #adhesivetape #tapemaking #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 / Korean Tape Factory", "a64e2a79-5be0-459a-8ef3-2801c8f65815", "https://www.youtube.com/watch?v=sGppaFD-3-A", "sGppaFD-3-A", false, 647, false, 10, "/downloads/FactoryTrip2022/2025-10-17 붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 ⧸ Korean Tape Factory/붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 ⧸ Korean Tape Factory [sGppaFD-3-A].mkv", false, false, 2, [], 98, ~U[2025-10-17 07:55:01Z], ~U[2025-12-23 08:34:10Z], ~U[2025-12-23 08:34:10Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#테이프 #점착테이프 #공장 #패키지 #포장용테이프 #opp테이프 #박스테이프 #컬러테이프 #박스포장 #원준테이프 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #tape #tapes #packingtape #packagingtape #adhesivetapes #adhesivetape #tapemaking #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 / Korean Tape Factory", "https://www.youtube.com/watch?v=sGppaFD-3-A", "sGppaFD-3-A", 647, false, "/downloads/FactoryTrip2022/2025-10-17 붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 ⧸ Korean Tape Factory/붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 ⧸ Korean Tape Factory [sGppaFD-3-A].mkv", false, 2, ~U[2025-10-17 07:55:01Z]] 08:34:10.488 [debug] QUERY OK source="sources" db=0.4ms queue=0.3ms idle=51.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:10.490 [debug] QUERY OK source="media_profiles" db=1.5ms queue=0.1ms idle=15.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:34:10.492 [debug] QUERY OK source="media_items" db=1.3ms idle=16.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 [14158] 08:34:10.492 [debug] Current batch of media processed. Will check again in 1000ms 08:34:11.493 [debug] Current batch of media processed. Will check again in 1000ms 08:34:12.495 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#해금 #악기 #전통 #가야금 #현악기 #악기장 #전통악기 #국악기 #류충선국악기연구원 #거문고 #관악기 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #haegeum #geomungo #gayageum #traditionalinstruments #traditional #stringinstrument #stringinstruments #koreanmusicalinstrument #korean #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 986, "filename" => "/downloads/FactoryTrip2022/2025-10-10 단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop/단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop [vkBpmu_JJz4].mkv", "id" => "vkBpmu_JJz4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=vkBpmu_JJz4", "playlist_index" => 11, "timestamp" => 1760083272, "title" => "단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 / Korean traditional instrument workshop", "upload_date" => "20251010"} 08:34:12.495 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=829.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [2] 08:34:12.496 [debug] QUERY OK source="sources" db=0.2ms idle=830.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:12.497 [debug] QUERY OK source="media_items" db=0.7ms idle=830.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-10 08:01:12Z], 2] 08:34:12.498 [debug] QUERY OK source="media_items" db=0.9ms idle=831.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#해금 #악기 #전통 #가야금 #현악기 #악기장 #전통악기 #국악기 #류충선국악기연구원 #거문고 #관악기 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #haegeum #geomungo #gayageum #traditionalinstruments #traditional #stringinstrument #stringinstruments #koreanmusicalinstrument #korean #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 / Korean traditional instrument workshop", "f40c2295-b23d-4ad6-8442-a413468dee8f", "https://www.youtube.com/watch?v=vkBpmu_JJz4", "vkBpmu_JJz4", false, 986, false, 11, "/downloads/FactoryTrip2022/2025-10-10 단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop/단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop [vkBpmu_JJz4].mkv", false, false, 2, [], 98, ~U[2025-10-10 08:01:12Z], ~U[2025-12-23 08:34:12Z], ~U[2025-12-23 08:34:12Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#해금 #악기 #전통 #가야금 #현악기 #악기장 #전통악기 #국악기 #류충선국악기연구원 #거문고 #관악기 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #haegeum #geomungo #gayageum #traditionalinstruments #traditional #stringinstrument #stringinstruments #koreanmusicalinstrument #korean #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 / Korean traditional instrument workshop", "https://www.youtube.com/watch?v=vkBpmu_JJz4", "vkBpmu_JJz4", 986, false, "/downloads/FactoryTrip2022/2025-10-10 단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop/단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop [vkBpmu_JJz4].mkv", false, 2, ~U[2025-10-10 08:01:12Z]] 08:34:12.499 [debug] QUERY OK source="sources" db=0.2ms idle=57.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:12.499 [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] 08:34:12.500 [debug] QUERY OK source="media_items" db=0.2ms 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 [12825] 08:34:12.500 [debug] Current batch of media processed. Will check again in 1000ms 08:34:13.501 [debug] Current batch of media processed. Will check again in 1000ms 08:34:14.502 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#종이컵 #종이용기 #공장 #패키지 #음료컵 #팝콘컵 #종이그릇 #종이접시 #종이트레이 #종이도시락 #포장용기 #일회용 #일회용품 #아주 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #papercup #paperpackaging #papercupmachines #papercupmakingbusiness #papercupmachinery #papercupmachine #paperpackagingbusiness #papercupmaking #papercontainer #paperbox #papertray #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 815, "filename" => "/downloads/FactoryTrip2022/2025-10-03 하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 ⧸ Korean paper packaging factory/하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 ⧸ Korean paper packaging factory [xWuxdcnyrFE].mkv", "id" => "xWuxdcnyrFE", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=xWuxdcnyrFE", "playlist_index" => 12, "timestamp" => 1759478471, "title" => "하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 / Korean paper packaging factory", "upload_date" => "20251003"} 08:34:14.503 [debug] QUERY OK source="sources" db=0.3ms 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 (?)) [2] 08:34:14.504 [debug] QUERY OK source="sources" db=0.1ms idle=838.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:14.504 [debug] QUERY OK source="media_items" db=0.7ms idle=838.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-03 08:01:11Z], 2] 08:34:14.506 [debug] QUERY OK source="media_items" db=0.8ms idle=839.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#종이컵 #종이용기 #공장 #패키지 #음료컵 #팝콘컵 #종이그릇 #종이접시 #종이트레이 #종이도시락 #포장용기 #일회용 #일회용품 #아주 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #papercup #paperpackaging #papercupmachines #papercupmakingbusiness #papercupmachinery #papercupmachine #paperpackagingbusiness #papercupmaking #papercontainer #paperbox #papertray #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 / Korean paper packaging factory", "da5cdc3c-33bd-42da-b8de-01ea59db4f55", "https://www.youtube.com/watch?v=xWuxdcnyrFE", "xWuxdcnyrFE", false, 815, false, 12, "/downloads/FactoryTrip2022/2025-10-03 하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 ⧸ Korean paper packaging factory/하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 ⧸ Korean paper packaging factory [xWuxdcnyrFE].mkv", false, false, 2, [], 98, ~U[2025-10-03 08:01:11Z], ~U[2025-12-23 08:34:14Z], ~U[2025-12-23 08:34:14Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#종이컵 #종이용기 #공장 #패키지 #음료컵 #팝콘컵 #종이그릇 #종이접시 #종이트레이 #종이도시락 #포장용기 #일회용 #일회용품 #아주 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #papercup #paperpackaging #papercupmachines #papercupmakingbusiness #papercupmachinery #papercupmachine #paperpackagingbusiness #papercupmaking #papercontainer #paperbox #papertray #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 / Korean paper packaging factory", "https://www.youtube.com/watch?v=xWuxdcnyrFE", "xWuxdcnyrFE", 815, false, "/downloads/FactoryTrip2022/2025-10-03 하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 ⧸ Korean paper packaging factory/하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 ⧸ Korean paper packaging factory [xWuxdcnyrFE].mkv", false, 2, ~U[2025-10-03 08:01:11Z]] 08:34:14.506 [debug] QUERY OK source="sources" db=0.2ms idle=59.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" = ?) [2] 08:34:14.506 [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] 08:34:14.507 [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 [11552] 08:34:14.507 [debug] Current batch of media processed. Will check again in 1000ms 08:34:15.508 [debug] Current batch of media processed. Will check again in 1000ms 08:34:15.737 [info] {"source":"oban","duration":1453,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:34:16.509 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#거문고 #가야금 #현악기 #전통 #악기장 #전통악기 #국악기 #진향국악기연구원 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #geomungo #gayageum #traditionalinstruments #traditional #stringinstrument #stringinstruments #koreanmusicalinstrument #korean #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 1359, "filename" => "/downloads/FactoryTrip2022/2025-09-26 나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop/나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop [NS2zceeIa-A].mkv", "id" => "NS2zceeIa-A", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=NS2zceeIa-A", "playlist_index" => 13, "timestamp" => 1758873300, "title" => "나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 / Korean traditional instrument workshop", "upload_date" => "20250926"} 08:34:16.510 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=844.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [2] 08:34:16.510 [debug] QUERY OK source="sources" db=0.1ms idle=845.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:16.511 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=845.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-26 07:55:00Z], 2] 08:34:16.513 [debug] QUERY OK source="media_items" db=0.8ms idle=774.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#거문고 #가야금 #현악기 #전통 #악기장 #전통악기 #국악기 #진향국악기연구원 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #geomungo #gayageum #traditionalinstruments #traditional #stringinstrument #stringinstruments #koreanmusicalinstrument #korean #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 / Korean traditional instrument workshop", "6f3fd050-a99e-42d5-90ed-ec2112052b2e", "https://www.youtube.com/watch?v=NS2zceeIa-A", "NS2zceeIa-A", false, 1359, false, 13, "/downloads/FactoryTrip2022/2025-09-26 나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop/나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop [NS2zceeIa-A].mkv", false, false, 2, [], 98, ~U[2025-09-26 07:55:00Z], ~U[2025-12-23 08:34:16Z], ~U[2025-12-23 08:34:16Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#거문고 #가야금 #현악기 #전통 #악기장 #전통악기 #국악기 #진향국악기연구원 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #geomungo #gayageum #traditionalinstruments #traditional #stringinstrument #stringinstruments #koreanmusicalinstrument #korean #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 / Korean traditional instrument workshop", "https://www.youtube.com/watch?v=NS2zceeIa-A", "NS2zceeIa-A", 1359, false, "/downloads/FactoryTrip2022/2025-09-26 나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop/나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop [NS2zceeIa-A].mkv", false, 2, ~U[2025-09-26 07:55:00Z]] 08:34:16.513 [debug] QUERY OK source="sources" db=0.1ms idle=63.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:16.514 [debug] QUERY OK source="media_profiles" db=0.1ms queue=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] 08:34:16.514 [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 [10289] 08:34:16.514 [debug] Current batch of media processed. Will check again in 1000ms 08:34:17.515 [debug] Current batch of media processed. Will check again in 1000ms 08:34:18.516 [debug] Current batch of media processed. Will check again in 1000ms 08:34:19.517 [debug] Current batch of media processed. Will check again in 1000ms 08:34:20.518 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 / Korean Wood Craft Binge Watch\n\n00:00 한국의 목탁 만드는 과정\n15:36 한국의 레진 테이블 만드는 과정\n41:56 한국의 당구 큐 만드는 과정\n55:47 한국의 업소용 소파 만드는 과정\n1:07:03 한국의 야구배트 만드는 과정\n1:13:10 한국의 독서대 만드는 과정\n1:24:13 한국의 소반 만드는 과정\n1:45:49 한국의 단소 만드는 과정\n1:58:24 한국의 특수목 거울 만드는 과정\n2:15:13 한국의 엔드그레인 도마 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#나무 #목공 #목공방 #목공예 #목공기계 #목탁 #레진 #레진공예 #레진아트 #레진테이블 #특수목 #당구큐 #소파 #수제 #야구 #야구배트 #독서대 #소반 #테이블 #반상 #나무테이블 #단소 #거울 #인테리어 #인테리어소품 #도마 #엔드그레인도마 #나무도마 #기계 #전문가 #기술자 #장인 #제작 #woodworking #wood #woodcraft #woodwork #woodcarving #wooden #woodscraft #woodart #woods #woodworkingart #woodproducts #woodworker #woodworkingtools #woodworkingtips #woodworkingvideo #moktak #woodblock #woodenbell #resinart #resin #resincrafts #resintable #billiardcue #billiards #sofa #couch #baseballbats #baseballbat #readingdesk #readingtable #bookholder #lectern #soban #woodtable #diningtable #instruments #danso #bambooflute #traditionalinstruments #interiordesign #mirror #endgrain #endgraincuttingboard #cuttingboards #cuttingboard #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "duration" => 9091, "filename" => "/downloads/FactoryTrip2022/2025-09-19 죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 ⧸ Ultimate Korean Woodcraft Compilation/죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 ⧸ Ultimate Korean Woodcraft Compilation [xoSdXqD1B74].mkv", "id" => "xoSdXqD1B74", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=xoSdXqD1B74", "playlist_index" => 14, "timestamp" => 1758268261, "title" => "죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 / Ultimate Korean Woodcraft Compilation", "upload_date" => "20250919"} 08:34:20.519 [debug] QUERY OK source="sources" db=0.2ms idle=853.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 (?)) [2] 08:34:20.519 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=853.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:20.520 [debug] QUERY OK source="media_items" db=0.7ms idle=854.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-19 07:51:01Z], 2] 08:34:20.522 [debug] QUERY OK source="media_items" db=1.3ms idle=855.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 / Korean Wood Craft Binge Watch\n\n00:00 한국의 목탁 만드는 과정\n15:36 한국의 레진 테이블 만드는 과정\n41:56 한국의 당구 큐 만드는 과정\n55:47 한국의 업소용 소파 만드는 과정\n1:07:03 한국의 야구배트 만드는 과정\n1:13:10 한국의 독서대 만드는 과정\n1:24:13 한국의 소반 만드는 과정\n1:45:49 한국의 단소 만드는 과정\n1:58:24 한국의 특수목 거울 만드는 과정\n2:15:13 한국의 엔드그레인 도마 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#나무 #목공 #목공방 #목공예 #목공기계 #목탁 #레진 #레진공예 #레진아트 #레진테이블 #특수목 #당구큐 #소파 #수제 #야구 #야구배트 #독서대 #소반 #테이블 #반상 #나무테이블 #단소 #거울 #인테리어 #인테리어소품 #도마 #엔드그레인도마 #나무도마 #기계 #전문가 #기술자 #장인 #제작 #woodworking #wood #woodcraft #woodwork #woodcarving #wooden #woodscraft #woodart #woods #woodworkingart #woodproducts #woodworker #woodworkingtools #woodworkingtips #woodworkingvideo #moktak #woodblock #woodenbell #resinart #resin #resincrafts #resintable #billiardcue #billiards #sofa #couch #baseballbats #baseballbat #readingdesk #readingtable #bookholder #lectern #soban #woodtable #diningtable #instruments #danso #bambooflute #traditionalinstruments #interiordesign #mirror #endgrain #endgraincuttingboard #cuttingboards #cuttingboard #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 / Ultimate Korean Woodcraft Compilation", "dc6d9900-e305-4d88-b20d-083ddede6983", "https://www.youtube.com/watch?v=xoSdXqD1B74", "xoSdXqD1B74", false, 9091, false, 14, "/downloads/FactoryTrip2022/2025-09-19 죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 ⧸ Ultimate Korean Woodcraft Compilation/죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 ⧸ Ultimate Korean Woodcraft Compilation [xoSdXqD1B74].mkv", false, false, 2, [], 98, ~U[2025-09-19 07:51:01Z], ~U[2025-12-23 08:34:20Z], ~U[2025-12-23 08:34:20Z], "죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 / Korean Wood Craft Binge Watch\n\n00:00 한국의 목탁 만드는 과정\n15:36 한국의 레진 테이블 만드는 과정\n41:56 한국의 당구 큐 만드는 과정\n55:47 한국의 업소용 소파 만드는 과정\n1:07:03 한국의 야구배트 만드는 과정\n1:13:10 한국의 독서대 만드는 과정\n1:24:13 한국의 소반 만드는 과정\n1:45:49 한국의 단소 만드는 과정\n1:58:24 한국의 특수목 거울 만드는 과정\n2:15:13 한국의 엔드그레인 도마 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#나무 #목공 #목공방 #목공예 #목공기계 #목탁 #레진 #레진공예 #레진아트 #레진테이블 #특수목 #당구큐 #소파 #수제 #야구 #야구배트 #독서대 #소반 #테이블 #반상 #나무테이블 #단소 #거울 #인테리어 #인테리어소품 #도마 #엔드그레인도마 #나무도마 #기계 #전문가 #기술자 #장인 #제작 #woodworking #wood #woodcraft #woodwork #woodcarving #wooden #woodscraft #woodart #woods #woodworkingart #woodproducts #woodworker #woodworkingtools #woodworkingtips #woodworkingvideo #moktak #woodblock #woodenbell #resinart #resin #resincrafts #resintable #billiardcue #billiards #sofa #couch #baseballbats #baseballbat #readingdesk #readingtable #bookholder #lectern #soban #woodtable #diningtable #instruments #danso #bambooflute #traditionalinstruments #interiordesign #mirror #endgrain #endgraincuttingboard #cuttingboards #cuttingboard #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 / Ultimate Korean Woodcraft Compilation", "https://www.youtube.com/watch?v=xoSdXqD1B74", "xoSdXqD1B74", 9091, false, "/downloads/FactoryTrip2022/2025-09-19 죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 ⧸ Ultimate Korean Woodcraft Compilation/죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 ⧸ Ultimate Korean Woodcraft Compilation [xoSdXqD1B74].mkv", false, 2, ~U[2025-09-19 07:51:01Z]] 08:34:20.523 [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" = ?) [2] 08:34:20.523 [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] 08:34:20.524 [debug] QUERY OK source="media_items" db=0.3ms 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 [9024] 08:34:20.524 [debug] Current batch of media processed. Will check again in 1000ms 08:34:21.525 [debug] Current batch of media processed. Will check again in 1000ms 08:34:22.526 [debug] Current batch of media processed. Will check again in 1000ms 08:34:23.527 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n#쇼핑백 #종이가방 #공장 #종이백 #종이포대 #신풍쇼핑백 #재단 #인쇄 #코팅 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #paper #bag #paperbag #paperbags #paperbagmakingmachine #paperbagmaking #shoppingbag #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 653, "filename" => "/downloads/FactoryTrip2022/2025-09-12 수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 ⧸ Korean paperbag factory/수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 ⧸ Korean paperbag factory [q7bETTLIyn4].mkv", "id" => "q7bETTLIyn4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=q7bETTLIyn4", "playlist_index" => 15, "timestamp" => 1757664064, "title" => "수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 / Korean paperbag factory", "upload_date" => "20250912"} 08:34:23.528 [debug] QUERY OK source="sources" db=0.2ms idle=1862.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 (?)) [2] 08:34:23.529 [debug] QUERY OK source="sources" db=0.1ms idle=1863.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:23.529 [debug] QUERY OK source="media_items" db=0.6ms idle=1863.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-12 08:01:04Z], 2] 08:34:23.531 [debug] QUERY OK source="media_items" db=1.1ms idle=1067.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n#쇼핑백 #종이가방 #공장 #종이백 #종이포대 #신풍쇼핑백 #재단 #인쇄 #코팅 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #paper #bag #paperbag #paperbags #paperbagmakingmachine #paperbagmaking #shoppingbag #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 / Korean paperbag factory", "ad63a020-a3d9-4422-a962-a5ae5387d3d2", "https://www.youtube.com/watch?v=q7bETTLIyn4", "q7bETTLIyn4", false, 653, false, 15, "/downloads/FactoryTrip2022/2025-09-12 수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 ⧸ Korean paperbag factory/수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 ⧸ Korean paperbag factory [q7bETTLIyn4].mkv", false, false, 2, [], 98, ~U[2025-09-12 08:01:04Z], ~U[2025-12-23 08:34:23Z], ~U[2025-12-23 08:34:23Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n#쇼핑백 #종이가방 #공장 #종이백 #종이포대 #신풍쇼핑백 #재단 #인쇄 #코팅 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #paper #bag #paperbag #paperbags #paperbagmakingmachine #paperbagmaking #shoppingbag #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 / Korean paperbag factory", "https://www.youtube.com/watch?v=q7bETTLIyn4", "q7bETTLIyn4", 653, false, "/downloads/FactoryTrip2022/2025-09-12 수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 ⧸ Korean paperbag factory/수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 ⧸ Korean paperbag factory [q7bETTLIyn4].mkv", false, 2, ~U[2025-09-12 08:01:04Z]] 08:34:23.532 [debug] QUERY OK source="sources" db=0.3ms idle=67.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:23.532 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=3.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:34:23.533 [debug] QUERY OK source="media_items" db=0.3ms 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 [3297] 08:34:23.533 [debug] Current batch of media processed. Will check again in 1000ms 08:34:24.534 [debug] Current batch of media processed. Will check again in 1000ms 08:34:25.535 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n\n#목공 #테이블 #특수목 #목재 #레진 #레진공예 #레진테이블 #우드 #우드슬랩 #식탁 #리폼 #고급 #페스툴 #단하나의나무 #장인 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #wood #woodworking #woodwork #woodworkingart #woodart #woodcraft #woodworker #woodworkingvideo #resin #resinart #resincrafts #resintable #woodtable #exoticwood #reform #restoration #restoredfurniture #festool #making #makingvideos #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 1574, "filename" => "/downloads/FactoryTrip2022/2025-09-05 죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 ⧸ Korean woodworking craftsman/죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 ⧸ Korean woodworking craftsman [HoVtRQ62b40].mkv", "id" => "HoVtRQ62b40", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=HoVtRQ62b40", "playlist_index" => 16, "timestamp" => 1757059231, "title" => "죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 / Korean woodworking craftsman", "upload_date" => "20250905"} 08:34:25.536 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=870.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 (?)) [2] 08:34:25.536 [debug] QUERY OK source="sources" db=0.2ms idle=870.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:25.537 [debug] QUERY OK source="media_items" db=0.7ms idle=871.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-05 08:00:31Z], 2] 08:34:25.539 [debug] QUERY OK source="media_items" db=1.0ms idle=872.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n\n#목공 #테이블 #특수목 #목재 #레진 #레진공예 #레진테이블 #우드 #우드슬랩 #식탁 #리폼 #고급 #페스툴 #단하나의나무 #장인 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #wood #woodworking #woodwork #woodworkingart #woodart #woodcraft #woodworker #woodworkingvideo #resin #resinart #resincrafts #resintable #woodtable #exoticwood #reform #restoration #restoredfurniture #festool #making #makingvideos #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 / Korean woodworking craftsman", "22ca2190-027d-4bb2-b8f9-74b9f8e879c6", "https://www.youtube.com/watch?v=HoVtRQ62b40", "HoVtRQ62b40", false, 1574, false, 16, "/downloads/FactoryTrip2022/2025-09-05 죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 ⧸ Korean woodworking craftsman/죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 ⧸ Korean woodworking craftsman [HoVtRQ62b40].mkv", false, false, 2, [], 98, ~U[2025-09-05 08:00:31Z], ~U[2025-12-23 08:34:25Z], ~U[2025-12-23 08:34:25Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n\n#목공 #테이블 #특수목 #목재 #레진 #레진공예 #레진테이블 #우드 #우드슬랩 #식탁 #리폼 #고급 #페스툴 #단하나의나무 #장인 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #wood #woodworking #woodwork #woodworkingart #woodart #woodcraft #woodworker #woodworkingvideo #resin #resinart #resincrafts #resintable #woodtable #exoticwood #reform #restoration #restoredfurniture #festool #making #makingvideos #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 / Korean woodworking craftsman", "https://www.youtube.com/watch?v=HoVtRQ62b40", "HoVtRQ62b40", 1574, false, "/downloads/FactoryTrip2022/2025-09-05 죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 ⧸ Korean woodworking craftsman/죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 ⧸ Korean woodworking craftsman [HoVtRQ62b40].mkv", false, 2, ~U[2025-09-05 08:00:31Z]] 08:34:25.539 [debug] QUERY OK source="sources" db=0.1ms idle=70.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:25.540 [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] 08:34:25.540 [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 [318] 08:34:25.540 [debug] Current batch of media processed. Will check again in 1000ms 08:34:26.541 [debug] Current batch of media processed. Will check again in 1000ms 08:34:27.542 [debug] Current batch of media processed. Will check again in 1000ms 08:34:28.543 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 / Korean Leather Craft Binge Watch\n\n00:00 한국의 야구글러브 만드는 과정\n19:55 한국의 명품가방 리폼 과정\n53:31 한국의 소파 만드는 과정\n1:08:11 한국의 수제화 만드는 과정\n1:26:19 한국의 다이어리 만드는 과정\n1:41:24 한국의 북 만드는 과정\n1:58:24 한국의 카드지갑 만드는 과정\n2:10:40 한국의 등산화 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#가죽 #가죽공예 #가죽공방 #야구글러브 #가죽가방 #명품 #명품가방 #명품가방수선 #명품가방리폼 #리폼 #수선 #소파 #가죽소파 #수제화 #신발 #가죽신발 #다이어리 #북 #악기 #카드지갑 #지갑 #등산화 #공정 #과정 #기계 #전문가 #기술자 #장인 #제작 #leather #leathercraft #leatherworking #leatherworker #leathershoes #leatherbag #leatherproducts #leathercompany #baseballglove #baseballgloves #restoration #reform #sofa #couch #leathershoes #shoemaker #shoemaking #diary #planner #instruments #drums #koreandrum #traditionalinstruments #wallet #leatherwallets #leatherwallet #cardwallet #leathercardholder #hikingshoes #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "duration" => 9463, "filename" => "/downloads/FactoryTrip2022/2025-08-29 가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 ⧸ Korean Leather Craft Compilation/가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 ⧸ Korean Leather Craft Compilation [4SC6qyqBmM4].mkv", "id" => "4SC6qyqBmM4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=4SC6qyqBmM4", "playlist_index" => 17, "timestamp" => 1756454406, "title" => "가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 / Korean Leather Craft Compilation", "upload_date" => "20250829"} 08:34:28.544 [debug] QUERY OK source="sources" db=0.2ms idle=1878.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 (?)) [2] 08:34:28.544 [debug] QUERY OK source="sources" db=0.1ms idle=1878.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:28.545 [debug] QUERY OK source="media_items" db=0.8ms idle=1878.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-29 08:00:06Z], 2] 08:34:28.547 [debug] QUERY OK source="media_items" db=1.1ms idle=1073.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 / Korean Leather Craft Binge Watch\n\n00:00 한국의 야구글러브 만드는 과정\n19:55 한국의 명품가방 리폼 과정\n53:31 한국의 소파 만드는 과정\n1:08:11 한국의 수제화 만드는 과정\n1:26:19 한국의 다이어리 만드는 과정\n1:41:24 한국의 북 만드는 과정\n1:58:24 한국의 카드지갑 만드는 과정\n2:10:40 한국의 등산화 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#가죽 #가죽공예 #가죽공방 #야구글러브 #가죽가방 #명품 #명품가방 #명품가방수선 #명품가방리폼 #리폼 #수선 #소파 #가죽소파 #수제화 #신발 #가죽신발 #다이어리 #북 #악기 #카드지갑 #지갑 #등산화 #공정 #과정 #기계 #전문가 #기술자 #장인 #제작 #leather #leathercraft #leatherworking #leatherworker #leathershoes #leatherbag #leatherproducts #leathercompany #baseballglove #baseballgloves #restoration #reform #sofa #couch #leathershoes #shoemaker #shoemaking #diary #planner #instruments #drums #koreandrum #traditionalinstruments #wallet #leatherwallets #leatherwallet #cardwallet #leathercardholder #hikingshoes #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 / Korean Leather Craft Compilation", "19d99469-ec14-473e-adaf-124155c733ad", "https://www.youtube.com/watch?v=4SC6qyqBmM4", "4SC6qyqBmM4", false, 9463, false, 17, "/downloads/FactoryTrip2022/2025-08-29 가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 ⧸ Korean Leather Craft Compilation/가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 ⧸ Korean Leather Craft Compilation [4SC6qyqBmM4].mkv", false, false, 2, [], 98, ~U[2025-08-29 08:00:06Z], ~U[2025-12-23 08:34:28Z], ~U[2025-12-23 08:34:28Z], "가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 / Korean Leather Craft Binge Watch\n\n00:00 한국의 야구글러브 만드는 과정\n19:55 한국의 명품가방 리폼 과정\n53:31 한국의 소파 만드는 과정\n1:08:11 한국의 수제화 만드는 과정\n1:26:19 한국의 다이어리 만드는 과정\n1:41:24 한국의 북 만드는 과정\n1:58:24 한국의 카드지갑 만드는 과정\n2:10:40 한국의 등산화 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#가죽 #가죽공예 #가죽공방 #야구글러브 #가죽가방 #명품 #명품가방 #명품가방수선 #명품가방리폼 #리폼 #수선 #소파 #가죽소파 #수제화 #신발 #가죽신발 #다이어리 #북 #악기 #카드지갑 #지갑 #등산화 #공정 #과정 #기계 #전문가 #기술자 #장인 #제작 #leather #leathercraft #leatherworking #leatherworker #leathershoes #leatherbag #leatherproducts #leathercompany #baseballglove #baseballgloves #restoration #reform #sofa #couch #leathershoes #shoemaker #shoemaking #diary #planner #instruments #drums #koreandrum #traditionalinstruments #wallet #leatherwallets #leatherwallet #cardwallet #leathercardholder #hikingshoes #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 / Korean Leather Craft Compilation", "https://www.youtube.com/watch?v=4SC6qyqBmM4", "4SC6qyqBmM4", 9463, false, "/downloads/FactoryTrip2022/2025-08-29 가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 ⧸ Korean Leather Craft Compilation/가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 ⧸ Korean Leather Craft Compilation [4SC6qyqBmM4].mkv", false, 2, ~U[2025-08-29 08:00:06Z]] 08:34:28.547 [debug] QUERY OK source="sources" db=0.1ms idle=73.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:28.548 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 08:34:28.548 [debug] QUERY OK source="media_items" db=0.2ms 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 [319] 08:34:28.548 [debug] Current batch of media processed. Will check again in 1000ms 08:34:29.549 [debug] Current batch of media processed. Will check again in 1000ms 08:34:30.550 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#서예 #붓 #필방 #서예용품 #캘리그라피 #세필붓 #채색붓 #서예붓 #천연모붓 #족제비모붓 #수제붓 #정호당필방 #전문가 #기술자 #장인 #필장 #공방 #공장 #제조 #과정 #생산 #제작 #메이킹 #brush #writingbrush #calligraphybrush #paintingbrushes #paintingbrush #calligraphy #brushmarkers #handmade #handmadebrush #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 957, "filename" => "/downloads/FactoryTrip2022/2025-08-22 족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 ⧸ Korean Brush Workshop/족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 ⧸ Korean Brush Workshop [2HiSKOQtlXg].mkv", "id" => "2HiSKOQtlXg", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=2HiSKOQtlXg", "playlist_index" => 18, "timestamp" => 1755849603, "title" => "족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 / Korean Brush Workshop", "upload_date" => "20250822"} 08:34:30.551 [debug] QUERY OK source="sources" db=0.1ms idle=885.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [2] 08:34:30.551 [debug] QUERY OK source="sources" db=0.1ms idle=885.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:30.552 [debug] QUERY OK source="media_items" db=0.7ms idle=886.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-22 08:00:03Z], 2] 08:34:30.553 [debug] QUERY OK source="media_items" db=0.8ms idle=887.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#서예 #붓 #필방 #서예용품 #캘리그라피 #세필붓 #채색붓 #서예붓 #천연모붓 #족제비모붓 #수제붓 #정호당필방 #전문가 #기술자 #장인 #필장 #공방 #공장 #제조 #과정 #생산 #제작 #메이킹 #brush #writingbrush #calligraphybrush #paintingbrushes #paintingbrush #calligraphy #brushmarkers #handmade #handmadebrush #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 / Korean Brush Workshop", "523898bf-c00e-484d-b4c9-afa14f76e3d0", "https://www.youtube.com/watch?v=2HiSKOQtlXg", "2HiSKOQtlXg", false, 957, false, 18, "/downloads/FactoryTrip2022/2025-08-22 족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 ⧸ Korean Brush Workshop/족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 ⧸ Korean Brush Workshop [2HiSKOQtlXg].mkv", false, false, 2, [], 98, ~U[2025-08-22 08:00:03Z], ~U[2025-12-23 08:34:30Z], ~U[2025-12-23 08:34:30Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#서예 #붓 #필방 #서예용품 #캘리그라피 #세필붓 #채색붓 #서예붓 #천연모붓 #족제비모붓 #수제붓 #정호당필방 #전문가 #기술자 #장인 #필장 #공방 #공장 #제조 #과정 #생산 #제작 #메이킹 #brush #writingbrush #calligraphybrush #paintingbrushes #paintingbrush #calligraphy #brushmarkers #handmade #handmadebrush #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 / Korean Brush Workshop", "https://www.youtube.com/watch?v=2HiSKOQtlXg", "2HiSKOQtlXg", 957, false, "/downloads/FactoryTrip2022/2025-08-22 족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 ⧸ Korean Brush Workshop/족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 ⧸ Korean Brush Workshop [2HiSKOQtlXg].mkv", false, 2, ~U[2025-08-22 08:00:03Z]] 08:34:30.554 [debug] QUERY OK source="sources" db=0.1ms idle=75.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" = ?) [2] 08:34:30.554 [debug] QUERY OK source="media_profiles" db=0.3ms 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] 08:34:30.555 [debug] QUERY OK source="media_items" db=0.2ms 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 [320] 08:34:30.555 [debug] Current batch of media processed. Will check again in 1000ms 08:34:31.556 [debug] Current batch of media processed. Will check again in 1000ms 08:34:32.557 [debug] Current batch of media processed. Will check again in 1000ms 08:34:33.559 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVBc3WC_WNuI7xqcHKXrTbk4\n\n#김밥 #식품 #공장 #냉동김밥 #식품공장 #야채김밥 #풀드포크김밥 #불고기김밥 #제육김밥 #참치김밥 #진미채김밥 #이노하스 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #kfood #kimbap #gimbap #food #foodfactory #bulgogikimbap #vegetablekimbap #pulledporkkimbap #tunamayokimbap #kimchikimbap #innohas #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 625, "filename" => "/downloads/FactoryTrip2022/2025-08-15 케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 ⧸ Korean food factory/케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 ⧸ Korean food factory [go-BKd4XWhs].mkv", "id" => "go-BKd4XWhs", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=go-BKd4XWhs", "playlist_index" => 19, "timestamp" => 1755244855, "title" => "케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 / Korean food factory", "upload_date" => "20250815"} 08:34:33.560 [debug] QUERY OK source="sources" db=0.3ms queue=0.2ms idle=1894.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [2] 08:34:33.561 [debug] QUERY OK source="sources" db=0.1ms idle=1895.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:33.561 [debug] QUERY OK source="media_items" db=0.6ms idle=1895.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-15 08:00:55Z], 2] 08:34:33.563 [debug] QUERY OK source="media_items" db=0.8ms idle=1079.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVBc3WC_WNuI7xqcHKXrTbk4\n\n#김밥 #식품 #공장 #냉동김밥 #식품공장 #야채김밥 #풀드포크김밥 #불고기김밥 #제육김밥 #참치김밥 #진미채김밥 #이노하스 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #kfood #kimbap #gimbap #food #foodfactory #bulgogikimbap #vegetablekimbap #pulledporkkimbap #tunamayokimbap #kimchikimbap #innohas #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 / Korean food factory", "534a92c6-4ae6-4b0a-ae89-c0fa76d4915c", "https://www.youtube.com/watch?v=go-BKd4XWhs", "go-BKd4XWhs", false, 625, false, 19, "/downloads/FactoryTrip2022/2025-08-15 케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 ⧸ Korean food factory/케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 ⧸ Korean food factory [go-BKd4XWhs].mkv", false, false, 2, [], 98, ~U[2025-08-15 08:00:55Z], ~U[2025-12-23 08:34:33Z], ~U[2025-12-23 08:34:33Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVBc3WC_WNuI7xqcHKXrTbk4\n\n#김밥 #식품 #공장 #냉동김밥 #식품공장 #야채김밥 #풀드포크김밥 #불고기김밥 #제육김밥 #참치김밥 #진미채김밥 #이노하스 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #kfood #kimbap #gimbap #food #foodfactory #bulgogikimbap #vegetablekimbap #pulledporkkimbap #tunamayokimbap #kimchikimbap #innohas #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 / Korean food factory", "https://www.youtube.com/watch?v=go-BKd4XWhs", "go-BKd4XWhs", 625, false, "/downloads/FactoryTrip2022/2025-08-15 케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 ⧸ Korean food factory/케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 ⧸ Korean food factory [go-BKd4XWhs].mkv", false, 2, ~U[2025-08-15 08:00:55Z]] 08:34:33.563 [debug] QUERY OK source="sources" db=0.1ms 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" = ?) [2] 08:34:33.563 [debug] QUERY OK source="media_profiles" db=0.1ms queue=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] 08:34:33.564 [debug] QUERY OK source="media_items" db=0.3ms queue=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 [321] 08:34:33.564 [debug] Current batch of media processed. Will check again in 1000ms 08:34:34.565 [debug] Current batch of media processed. Will check again in 1000ms 08:34:34.943 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@FactoryTrip2022 --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/FactoryTrip2022/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/fa/c1/fac1d4dc910b42c730fccd195451dcac225374335caa000c235f0e0743a5642a.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/ac/d5/acd5c54507407fed6f8e058c558f9c950438e00a54a872192bc3c05decf363b5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 101 with: 08:34:34.945 [debug] Gracefully stopping file follower 08:34:34.945 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=459.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [2] 08:34:34.946 [debug] QUERY OK source="sources" db=0.2ms idle=279.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:34.947 [debug] QUERY OK source="media_items" db=0.6ms idle=279.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-19 07:50:00Z], 2] 08:34:34.948 [debug] QUERY OK source="media_items" db=1.1ms idle=280.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 / Top 10 Most-Watched Manufacturing Processes of 2025! Inside Korea’s Incredible Factories\n\n00:00 한국의 캠핑카 만드는 과정\n23:25 한국의 맷돌 만드는 과정\n39:36 한국의 낚시바늘 만드는 과정\n50:39 한국의 낚시대 만드는 과정\n1:06:53 한국의 목탁 만드는 과정\n1:22:06 한국의 레진 테이블 만드는 과정\n1:48:22 한국의 육포 만드는 과정\n1:59:34 한국의 멀티탭 만드는 과정\n2:10:38 한국의 비누 만드는 과정\n2:19:03 한국의 범종 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#캠핑카 #캠퍼 #맷돌 #낚시 #낚시용품 #낚시바늘 #낚시대 #목탁 #레진 #레진테이블 #테이블 #육포 #멀티탭 #비누 #범종 #식품공장 #목공 #우드워커 #공장 #공방 #기계 #전문가 #기술자 #장인 #메이킹 #제조 #생산 #제작 #camper #campervan #campingcar #milestone #milestones #stoneware #fishing #fishingequipment #fishinghook #fishingrod #fishingrods #moktak #woodenclapper #woodenfish #woodworking #woodwork #woodscraft #woodart #woodworkingart #woodcraft #resintable #woodtable #resinart #beefjerky #jerky #powerstrips #powerbar #extensioncord #soap #soaps #soapmaking #bell #bronzebell #templebells #templebell #casting #foodfactory #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 / Inside Korea’s Incredible Factories", "18e0e502-1e92-481d-84f5-8da9fec0453e", "https://www.youtube.com/watch?v=JndvLYRWlvY", "JndvLYRWlvY", false, 9470, false, 1, "/downloads/FactoryTrip2022/2025-12-19 2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 ⧸ Inside Korea’s Incredible Factories/2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 ⧸ Inside Korea’s Incredible Factories [JndvLYRWlvY].mkv", false, false, 2, [], 98, ~U[2025-12-19 07:50:00Z], ~U[2025-12-23 08:34:34Z], ~U[2025-12-23 08:34:34Z], "2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 / Top 10 Most-Watched Manufacturing Processes of 2025! Inside Korea’s Incredible Factories\n\n00:00 한국의 캠핑카 만드는 과정\n23:25 한국의 맷돌 만드는 과정\n39:36 한국의 낚시바늘 만드는 과정\n50:39 한국의 낚시대 만드는 과정\n1:06:53 한국의 목탁 만드는 과정\n1:22:06 한국의 레진 테이블 만드는 과정\n1:48:22 한국의 육포 만드는 과정\n1:59:34 한국의 멀티탭 만드는 과정\n2:10:38 한국의 비누 만드는 과정\n2:19:03 한국의 범종 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#캠핑카 #캠퍼 #맷돌 #낚시 #낚시용품 #낚시바늘 #낚시대 #목탁 #레진 #레진테이블 #테이블 #육포 #멀티탭 #비누 #범종 #식품공장 #목공 #우드워커 #공장 #공방 #기계 #전문가 #기술자 #장인 #메이킹 #제조 #생산 #제작 #camper #campervan #campingcar #milestone #milestones #stoneware #fishing #fishingequipment #fishinghook #fishingrod #fishingrods #moktak #woodenclapper #woodenfish #woodworking #woodwork #woodscraft #woodart #woodworkingart #woodcraft #resintable #woodtable #resinart #beefjerky #jerky #powerstrips #powerbar #extensioncord #soap #soaps #soapmaking #bell #bronzebell #templebells #templebell #casting #foodfactory #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 / Inside Korea’s Incredible Factories", "https://www.youtube.com/watch?v=JndvLYRWlvY", "JndvLYRWlvY", 9470, false, "/downloads/FactoryTrip2022/2025-12-19 2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 ⧸ Inside Korea’s Incredible Factories/2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 ⧸ Inside Korea’s Incredible Factories [JndvLYRWlvY].mkv", false, 2, ~U[2025-12-19 07:50:00Z]] 08:34:34.949 [debug] QUERY OK source="sources" db=0.1ms idle=282.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:34.949 [debug] QUERY OK source="media_items" db=0.6ms 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[2025-12-12 07:50:01Z], 2] 08:34:34.951 [debug] QUERY OK source="media_items" db=1.0ms idle=3.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#프라이팬 #주방용품 #공장 #냄비 #후라이팬 #팬 #웍팬 #주방도구 #키친 #델라고 #러브쿡 #오일마스터 #기술자 #제조 #과정 #생산 #제작 #메이킹 #pan #frypan #fryingpan #cookingpan #cookware #kitchenware #pot #frypanmaking #cookwaremaking #skillet #dellago #oilmaster #lovecook #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 / Korean cookware factory", "badbffe9-7bfc-4ef1-83b5-0b63955144b2", "https://www.youtube.com/watch?v=Qa2-1g1GPN4", "Qa2-1g1GPN4", false, 741, false, 2, "/downloads/FactoryTrip2022/2025-12-12 10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 ⧸ Korean cookware factory/10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 ⧸ Korean cookware factory [Qa2-1g1GPN4].mkv", false, false, 2, [], 98, ~U[2025-12-12 07:50:01Z], ~U[2025-12-23 08:34:34Z], ~U[2025-12-23 08:34:34Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#프라이팬 #주방용품 #공장 #냄비 #후라이팬 #팬 #웍팬 #주방도구 #키친 #델라고 #러브쿡 #오일마스터 #기술자 #제조 #과정 #생산 #제작 #메이킹 #pan #frypan #fryingpan #cookingpan #cookware #kitchenware #pot #frypanmaking #cookwaremaking #skillet #dellago #oilmaster #lovecook #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 / Korean cookware factory", "https://www.youtube.com/watch?v=Qa2-1g1GPN4", "Qa2-1g1GPN4", 741, false, "/downloads/FactoryTrip2022/2025-12-12 10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 ⧸ Korean cookware factory/10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 ⧸ Korean cookware factory [Qa2-1g1GPN4].mkv", false, 2, ~U[2025-12-12 07:50:01Z]] 08:34:34.951 [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" = ?) [2] 08:34:34.952 [debug] QUERY OK source="media_items" db=0.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[2025-12-05 07:50:00Z], 2] 08:34:34.953 [debug] QUERY OK source="media_items" db=0.9ms idle=3.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#의자 #사무용의자 #공장 #사무용가구 #컴퓨터의자 #인테리어의자 #카페의자 #책상의자 #메쉬의자 #학생의자 #스툴 #의자추천 #사출 #DSP #ERMON #기술자 #제조 #과정 #생산 #제작 #메이킹 #chair #chairs #officechair #officechairs #computerchair #chairmaking #injection #gamingchair #executivechair #stool #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 / Korean Chair Factory", "93db21ac-ca7d-4813-9ce5-8361d938b2fe", "https://www.youtube.com/watch?v=jF72xiNqq6Q", "jF72xiNqq6Q", false, 696, false, 3, "/downloads/FactoryTrip2022/2025-12-05 30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 ⧸ Korean Chair Factory/30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 ⧸ Korean Chair Factory [jF72xiNqq6Q].mkv", false, false, 2, [], 98, ~U[2025-12-05 07:50:00Z], ~U[2025-12-23 08:34:34Z], ~U[2025-12-23 08:34:34Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#의자 #사무용의자 #공장 #사무용가구 #컴퓨터의자 #인테리어의자 #카페의자 #책상의자 #메쉬의자 #학생의자 #스툴 #의자추천 #사출 #DSP #ERMON #기술자 #제조 #과정 #생산 #제작 #메이킹 #chair #chairs #officechair #officechairs #computerchair #chairmaking #injection #gamingchair #executivechair #stool #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 / Korean Chair Factory", "https://www.youtube.com/watch?v=jF72xiNqq6Q", "jF72xiNqq6Q", 696, false, "/downloads/FactoryTrip2022/2025-12-05 30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 ⧸ Korean Chair Factory/30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 ⧸ Korean Chair Factory [jF72xiNqq6Q].mkv", false, 2, ~U[2025-12-05 07:50:00Z]] 08:34:34.954 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [2] 08:34:34.955 [debug] QUERY OK source="media_items" db=0.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[2025-11-28 07:50:01Z], 2] 08:34:34.956 [debug] QUERY OK source="media_items" db=0.8ms idle=3.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n\n#가죽 #가죽가방 #공방 #가죽공방 #남자가방 #서류가방 #가죽제품 #가죽소품 #가죽지갑 #카드지갑 #아스툴라 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #leather #leathercraft #leatherbag #leatherbags #leatherworking #leatherfashion #leatherwork #leatherworker #bagmaking #briefcase #briefbag #businesscase #korean #handmade #handmadecraft #handmadebag #machine #making #makingvideos #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 / Korean Leather Workshop", "928d9d02-9061-458c-b7a7-e0692544f0bd", "https://www.youtube.com/watch?v=sslv-jLNb0Y", "sslv-jLNb0Y", false, 1105, false, 4, "/downloads/FactoryTrip2022/2025-11-28 한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 ⧸ Korean Leather Workshop/한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 ⧸ Korean Leather Workshop [sslv-jLNb0Y].mkv", false, false, 2, [], 98, ~U[2025-11-28 07:50:01Z], ~U[2025-12-23 08:34:34Z], ~U[2025-12-23 08:34:34Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n\n#가죽 #가죽가방 #공방 #가죽공방 #남자가방 #서류가방 #가죽제품 #가죽소품 #가죽지갑 #카드지갑 #아스툴라 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #leather #leathercraft #leatherbag #leatherbags #leatherworking #leatherfashion #leatherwork #leatherworker #bagmaking #briefcase #briefbag #businesscase #korean #handmade #handmadecraft #handmadebag #machine #making #makingvideos #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 / Korean Leather Workshop", "https://www.youtube.com/watch?v=sslv-jLNb0Y", "sslv-jLNb0Y", 1105, false, "/downloads/FactoryTrip2022/2025-11-28 한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 ⧸ Korean Leather Workshop/한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 ⧸ Korean Leather Workshop [sslv-jLNb0Y].mkv", false, 2, ~U[2025-11-28 07:50:01Z]] 08:34:34.956 [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" = ?) [2] 08:34:34.957 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-11-21 07:50:01Z], 2] 08:34:34.958 [debug] QUERY OK source="media_items" db=0.8ms idle=3.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 / A Full Look Inside Korea’s Packaging Manufacturing\n\n00:00 한국의 테이프 만드는 과정\n10:26 한국의 종이용기 만드는 과정\n23:35 한국의 비닐봉지 만드는 과정\n31:14 한국의 골판지 박스 자동으로 만드는 과정\n38:14 한국의 유리병 만드는 과정\n44:58 한국의 종이가방 만드는 과정\n55:27 한국의 금속 캔 만드는 과정\n1:04:16 한국의 라벨 만드는 과정\n1:18:32 한국의 로프 만드는 과정\n1:27:22 한국의 포장박스 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#포장 #패키지 #공장 #테이프 #종이컵 #종이용기 #비닐 #비닐봉지 #박스 #골판지박스 #종이박스 #포장박스 #유리용기 #유리병 #종이가방 #쇼핑백 #금속용기 #금속캔 #제관 #라벨 #스티커 #로프 #박스제작 #포장재 #기계 #전문가 #기술자 #장인 #제작 #packing #packaging #package #pack #packagingmachine #papercup #papercupmachine #paperpackaging #papercontainer #paperbag #paperbagmachine #paperbags #paperbagmakingmachine #paperbagmaking #plasticbag #plasticbagmakingmachine #plasticbags #rope #glassbottles #paperbox #cardboardpackaging #cardboardbox #label #labelmachine #labelmaking #metalpackaging #can #metalcan #steelcan #tincan #tincans #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 / Inside Korea’s Packaging Factories", "56f892e4-4678-43dc-a6cb-0b65e3b63278", "https://www.youtube.com/watch?v=6heSlmklMxM", "6heSlmklMxM", false, 5794, false, 5, "/downloads/FactoryTrip2022/2025-11-21 포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 ⧸ Inside Korea’s Packaging Factories/포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 ⧸ Inside Korea’s Packaging Factories [6heSlmklMxM].mkv", false, false, 2, [], 98, ~U[2025-11-21 07:50:01Z], ~U[2025-12-23 08:34:34Z], ~U[2025-12-23 08:34:34Z], "포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 / A Full Look Inside Korea’s Packaging Manufacturing\n\n00:00 한국의 테이프 만드는 과정\n10:26 한국의 종이용기 만드는 과정\n23:35 한국의 비닐봉지 만드는 과정\n31:14 한국의 골판지 박스 자동으로 만드는 과정\n38:14 한국의 유리병 만드는 과정\n44:58 한국의 종이가방 만드는 과정\n55:27 한국의 금속 캔 만드는 과정\n1:04:16 한국의 라벨 만드는 과정\n1:18:32 한국의 로프 만드는 과정\n1:27:22 한국의 포장박스 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#포장 #패키지 #공장 #테이프 #종이컵 #종이용기 #비닐 #비닐봉지 #박스 #골판지박스 #종이박스 #포장박스 #유리용기 #유리병 #종이가방 #쇼핑백 #금속용기 #금속캔 #제관 #라벨 #스티커 #로프 #박스제작 #포장재 #기계 #전문가 #기술자 #장인 #제작 #packing #packaging #package #pack #packagingmachine #papercup #papercupmachine #paperpackaging #papercontainer #paperbag #paperbagmachine #paperbags #paperbagmakingmachine #paperbagmaking #plasticbag #plasticbagmakingmachine #plasticbags #rope #glassbottles #paperbox #cardboardpackaging #cardboardbox #label #labelmachine #labelmaking #metalpackaging #can #metalcan #steelcan #tincan #tincans #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 / Inside Korea’s Packaging Factories", "https://www.youtube.com/watch?v=6heSlmklMxM", "6heSlmklMxM", 5794, false, "/downloads/FactoryTrip2022/2025-11-21 포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 ⧸ Inside Korea’s Packaging Factories/포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 ⧸ Inside Korea’s Packaging Factories [6heSlmklMxM].mkv", false, 2, ~U[2025-11-21 07:50:01Z]] 08:34:34.959 [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" = ?) [2] 08:34:34.959 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-11-14 07:50:00Z], 2] 08:34:34.963 [debug] QUERY OK source="media_items" db=2.8ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#낚시 #낚시바늘 #공장 #낚시용품 #피싱 #코리아후크 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #fishing #fishingequipment #hook #fishinghooks #fishinghook #hookfishing #hook_fishing #hooker #heattreatment #hookmaking #koreahook #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 / Korean Fishing Hook Factory", "059d9909-3e53-4d57-bf24-93f6a47be9a2", "https://www.youtube.com/watch?v=69UGVR66ngs", "69UGVR66ngs", false, 686, false, 6, "/downloads/FactoryTrip2022/2025-11-14 작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 ⧸ Korean Fishing Hook Factory/작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 ⧸ Korean Fishing Hook Factory [69UGVR66ngs].mkv", false, false, 2, [], 98, ~U[2025-11-14 07:50:00Z], ~U[2025-12-23 08:34:34Z], ~U[2025-12-23 08:34:34Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#낚시 #낚시바늘 #공장 #낚시용품 #피싱 #코리아후크 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #fishing #fishingequipment #hook #fishinghooks #fishinghook #hookfishing #hook_fishing #hooker #heattreatment #hookmaking #koreahook #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 / Korean Fishing Hook Factory", "https://www.youtube.com/watch?v=69UGVR66ngs", "69UGVR66ngs", 686, false, "/downloads/FactoryTrip2022/2025-11-14 작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 ⧸ Korean Fishing Hook Factory/작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 ⧸ Korean Fishing Hook Factory [69UGVR66ngs].mkv", false, 2, ~U[2025-11-14 07:50:00Z]] 08:34:34.963 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:34.964 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-11-07 08:00:49Z], 2] 08:34:34.965 [debug] QUERY OK source="media_items" db=0.8ms idle=5.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#밸브 #주물 #공장 #이형관 #맨홀뚜껑 #상하수도 #주철 #주조 #수도용 #산업용 #세계주철 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #valve #valvefactory #watervalve #gatevalve #gatevalves #casting #cast #iron #castiron #valvemanufacturer #valvemaking #fitting #segye #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 / Korean Valve Factory", "26584813-db4a-4a9f-bcd7-a57489bf068c", "https://www.youtube.com/watch?v=YM3ToKKMIZs", "YM3ToKKMIZs", false, 691, false, 7, "/downloads/FactoryTrip2022/2025-11-07 누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 ⧸ Korean Valve Factory/누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 ⧸ Korean Valve Factory [YM3ToKKMIZs].mkv", false, false, 2, [], 98, ~U[2025-11-07 08:00:49Z], ~U[2025-12-23 08:34:34Z], ~U[2025-12-23 08:34:34Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#밸브 #주물 #공장 #이형관 #맨홀뚜껑 #상하수도 #주철 #주조 #수도용 #산업용 #세계주철 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #valve #valvefactory #watervalve #gatevalve #gatevalves #casting #cast #iron #castiron #valvemanufacturer #valvemaking #fitting #segye #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 / Korean Valve Factory", "https://www.youtube.com/watch?v=YM3ToKKMIZs", "YM3ToKKMIZs", 691, false, "/downloads/FactoryTrip2022/2025-11-07 누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 ⧸ Korean Valve Factory/누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 ⧸ Korean Valve Factory [YM3ToKKMIZs].mkv", false, 2, ~U[2025-11-07 08:00:49Z]] 08:34:34.966 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:34.966 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-10-31 07:50:01Z], 2] 08:34:34.968 [debug] QUERY OK source="media_items" db=1.0ms idle=3.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#뚝배기 #주방용품 #공장 #업소용 #내열도자기 #도기 #세라믹 #솥 #냄비 #경산세라믹 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #ttukbaegi #cookware #cookwares #kitchenware #kitchenwares #ceramicware #pot #claypot #claypotmaking #potmaking #ceramicpots #ceramicpot #ceramicfactory #earthenware #dishware #porcelain #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 / Korean Clay Pot Factory", "ed6c428a-02d2-47f7-a676-c1e4222b602e", "https://www.youtube.com/watch?v=DMIGlU5DaZI", "DMIGlU5DaZI", false, 660, false, 8, "/downloads/FactoryTrip2022/2025-10-31 한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 ⧸ Korean Clay Pot Factory/한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 ⧸ Korean Clay Pot Factory [DMIGlU5DaZI].mkv", false, false, 2, [], 98, ~U[2025-10-31 07:50:01Z], ~U[2025-12-23 08:34:34Z], ~U[2025-12-23 08:34:34Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#뚝배기 #주방용품 #공장 #업소용 #내열도자기 #도기 #세라믹 #솥 #냄비 #경산세라믹 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #ttukbaegi #cookware #cookwares #kitchenware #kitchenwares #ceramicware #pot #claypot #claypotmaking #potmaking #ceramicpots #ceramicpot #ceramicfactory #earthenware #dishware #porcelain #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 / Korean Clay Pot Factory", "https://www.youtube.com/watch?v=DMIGlU5DaZI", "DMIGlU5DaZI", 660, false, "/downloads/FactoryTrip2022/2025-10-31 한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 ⧸ Korean Clay Pot Factory/한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 ⧸ Korean Clay Pot Factory [DMIGlU5DaZI].mkv", false, 2, ~U[2025-10-31 07:50:01Z]] 08:34:34.968 [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" = ?) [2] 08:34:34.969 [debug] QUERY OK source="media_items" db=0.6ms 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[2025-10-23 08:00:27Z], 2] 08:34:34.970 [debug] QUERY OK source="media_items" db=0.9ms idle=3.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["한 땀 한 땀, 세월이 만든 예술! 오직 손끝으로 완성된 세월의 작품. 한국 장인들의 전통 공예 몰아보기 / Korean Traditional Craft Binge Watch\n\n00:00 한국의 은주전자 만드는 과정\n23:39 한국의 전통 탈 만드는 과정\n39:23 한국의 범종 만드는 과정\n58:06 한국의 악기 소금 만드는 과정\n1:12:37 한국의 은장도 만드는 과정\n1:30:06 한국의 항아리 만드는 과정\n1:47:20 한국의 유기 그릇 만드는 과정\n1:55:40 한국의 화각공예품 만드는 과정\n2:04:11 한국의 한복 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#전통 #수작업 #장인 #공예 #공예품 #은주전자 #탈 #범종 #악기 #관악기 #소금 #은장도 #토기 #항아리 #유기 #놋그릇 #식기 #화각공예 #한복 #한복 #생산 #과정 #제작 #나무 #목공 #목공예 #수제 #핸드메이드 #기계 #전문가 #기술자 #제작 #silverkettle #silvercrafts #silver #woodworking #wood #woodcraft #woodwork #woodcarving #wooden #woodscraft #woodart #woods #woodworkingart #woodproducts #woodworker #woodworkingvideo #traditional #traditionalmasks #mask #woodenmask #brassitems #bell #hangingbell #bellmaking #brassbell #greatbell #temple #templebells #templebell #buddhistbell #churchbells #largebell #instruments #sogeum #windinstrument #bambooflute #traditionalinstruments #brassware #eunjangdo #silverknife #knifemaking #knife #knifesmith #blacksmith #traditionalknife #earthenware #earthenpot #jar #oxhorn #horn #hanbok #koreanstyle #making #production #korean #craft #crafts #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #master #process #asmr", "한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 / Korean Traditional Craft Compilation", "e0108b6b-2cb2-47f8-8692-d186835926e5", "https://www.youtube.com/watch?v=EaHG0sIgmsM", "EaHG0sIgmsM", false, 8591, false, 9, "/downloads/FactoryTrip2022/2025-10-23 한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 ⧸ Korean Traditional Craft Compilation/한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 ⧸ Korean Traditional Craft Compilation [EaHG0sIgmsM].mkv", false, false, 2, [], 98, ~U[2025-10-23 08:00:27Z], ~U[2025-12-23 08:34:34Z], ~U[2025-12-23 08:34:34Z], "한 땀 한 땀, 세월이 만든 예술! 오직 손끝으로 완성된 세월의 작품. 한국 장인들의 전통 공예 몰아보기 / Korean Traditional Craft Binge Watch\n\n00:00 한국의 은주전자 만드는 과정\n23:39 한국의 전통 탈 만드는 과정\n39:23 한국의 범종 만드는 과정\n58:06 한국의 악기 소금 만드는 과정\n1:12:37 한국의 은장도 만드는 과정\n1:30:06 한국의 항아리 만드는 과정\n1:47:20 한국의 유기 그릇 만드는 과정\n1:55:40 한국의 화각공예품 만드는 과정\n2:04:11 한국의 한복 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#전통 #수작업 #장인 #공예 #공예품 #은주전자 #탈 #범종 #악기 #관악기 #소금 #은장도 #토기 #항아리 #유기 #놋그릇 #식기 #화각공예 #한복 #한복 #생산 #과정 #제작 #나무 #목공 #목공예 #수제 #핸드메이드 #기계 #전문가 #기술자 #제작 #silverkettle #silvercrafts #silver #woodworking #wood #woodcraft #woodwork #woodcarving #wooden #woodscraft #woodart #woods #woodworkingart #woodproducts #woodworker #woodworkingvideo #traditional #traditionalmasks #mask #woodenmask #brassitems #bell #hangingbell #bellmaking #brassbell #greatbell #temple #templebells #templebell #buddhistbell #churchbells #largebell #instruments #sogeum #windinstrument #bambooflute #traditionalinstruments #brassware #eunjangdo #silverknife #knifemaking #knife #knifesmith #blacksmith #traditionalknife #earthenware #earthenpot #jar #oxhorn #horn #hanbok #koreanstyle #making #production #korean #craft #crafts #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #master #process #asmr", "한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 / Korean Traditional Craft Compilation", "https://www.youtube.com/watch?v=EaHG0sIgmsM", "EaHG0sIgmsM", 8591, false, "/downloads/FactoryTrip2022/2025-10-23 한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 ⧸ Korean Traditional Craft Compilation/한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 ⧸ Korean Traditional Craft Compilation [EaHG0sIgmsM].mkv", false, 2, ~U[2025-10-23 08:00:27Z]] 08:34:34.971 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [2] 08:34:34.972 [debug] QUERY OK source="media_items" db=0.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[2025-10-17 07:55:01Z], 2] 08:34:34.973 [debug] QUERY OK source="media_items" db=0.8ms idle=3.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#테이프 #점착테이프 #공장 #패키지 #포장용테이프 #opp테이프 #박스테이프 #컬러테이프 #박스포장 #원준테이프 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #tape #tapes #packingtape #packagingtape #adhesivetapes #adhesivetape #tapemaking #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 / Korean Tape Factory", "0105f2dc-1e60-46d1-931d-2e0d6d6d2feb", "https://www.youtube.com/watch?v=sGppaFD-3-A", "sGppaFD-3-A", false, 647, false, 10, "/downloads/FactoryTrip2022/2025-10-17 붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 ⧸ Korean Tape Factory/붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 ⧸ Korean Tape Factory [sGppaFD-3-A].mkv", false, false, 2, [], 98, ~U[2025-10-17 07:55:01Z], ~U[2025-12-23 08:34:34Z], ~U[2025-12-23 08:34:34Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#테이프 #점착테이프 #공장 #패키지 #포장용테이프 #opp테이프 #박스테이프 #컬러테이프 #박스포장 #원준테이프 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #tape #tapes #packingtape #packagingtape #adhesivetapes #adhesivetape #tapemaking #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 / Korean Tape Factory", "https://www.youtube.com/watch?v=sGppaFD-3-A", "sGppaFD-3-A", 647, false, "/downloads/FactoryTrip2022/2025-10-17 붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 ⧸ Korean Tape Factory/붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 ⧸ Korean Tape Factory [sGppaFD-3-A].mkv", false, 2, ~U[2025-10-17 07:55:01Z]] 08:34:34.973 [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" = ?) [2] 08:34:34.974 [debug] QUERY OK source="media_items" db=0.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[2025-10-10 08:01:12Z], 2] 08:34:35.075 [debug] QUERY OK source="media_items" db=100.2ms idle=3.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#해금 #악기 #전통 #가야금 #현악기 #악기장 #전통악기 #국악기 #류충선국악기연구원 #거문고 #관악기 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #haegeum #geomungo #gayageum #traditionalinstruments #traditional #stringinstrument #stringinstruments #koreanmusicalinstrument #korean #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 / Korean traditional instrument workshop", "af187db0-2584-4207-bf77-d485da96597d", "https://www.youtube.com/watch?v=vkBpmu_JJz4", "vkBpmu_JJz4", false, 986, false, 11, "/downloads/FactoryTrip2022/2025-10-10 단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop/단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop [vkBpmu_JJz4].mkv", false, false, 2, [], 98, ~U[2025-10-10 08:01:12Z], ~U[2025-12-23 08:34:34Z], ~U[2025-12-23 08:34:34Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#해금 #악기 #전통 #가야금 #현악기 #악기장 #전통악기 #국악기 #류충선국악기연구원 #거문고 #관악기 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #haegeum #geomungo #gayageum #traditionalinstruments #traditional #stringinstrument #stringinstruments #koreanmusicalinstrument #korean #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 / Korean traditional instrument workshop", "https://www.youtube.com/watch?v=vkBpmu_JJz4", "vkBpmu_JJz4", 986, false, "/downloads/FactoryTrip2022/2025-10-10 단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop/단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop [vkBpmu_JJz4].mkv", false, 2, ~U[2025-10-10 08:01:12Z]] 08:34:35.076 [debug] QUERY OK source="sources" db=0.4ms queue=0.2ms idle=104.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:35.077 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=103.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-03 08:01:11Z], 2] 08:34:35.528 [debug] QUERY OK source="media_items" db=450.4ms idle=104.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#종이컵 #종이용기 #공장 #패키지 #음료컵 #팝콘컵 #종이그릇 #종이접시 #종이트레이 #종이도시락 #포장용기 #일회용 #일회용품 #아주 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #papercup #paperpackaging #papercupmachines #papercupmakingbusiness #papercupmachinery #papercupmachine #paperpackagingbusiness #papercupmaking #papercontainer #paperbox #papertray #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 / Korean paper packaging factory", "cc0cf146-a50b-4852-8577-beea263480fd", "https://www.youtube.com/watch?v=xWuxdcnyrFE", "xWuxdcnyrFE", false, 815, false, 12, "/downloads/FactoryTrip2022/2025-10-03 하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 ⧸ Korean paper packaging factory/하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 ⧸ Korean paper packaging factory [xWuxdcnyrFE].mkv", false, false, 2, [], 98, ~U[2025-10-03 08:01:11Z], ~U[2025-12-23 08:34:35Z], ~U[2025-12-23 08:34:35Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#종이컵 #종이용기 #공장 #패키지 #음료컵 #팝콘컵 #종이그릇 #종이접시 #종이트레이 #종이도시락 #포장용기 #일회용 #일회용품 #아주 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #papercup #paperpackaging #papercupmachines #papercupmakingbusiness #papercupmachinery #papercupmachine #paperpackagingbusiness #papercupmaking #papercontainer #paperbox #papertray #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 / Korean paper packaging factory", "https://www.youtube.com/watch?v=xWuxdcnyrFE", "xWuxdcnyrFE", 815, false, "/downloads/FactoryTrip2022/2025-10-03 하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 ⧸ Korean paper packaging factory/하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 ⧸ Korean paper packaging factory [xWuxdcnyrFE].mkv", false, 2, ~U[2025-10-03 08:01:11Z]] 08:34:35.529 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:35.530 [debug] QUERY OK source="media_items" db=0.8ms idle=453.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-26 07:55:00Z], 2] 08:34:35.532 [debug] QUERY OK source="media_items" db=1.1ms idle=453.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#거문고 #가야금 #현악기 #전통 #악기장 #전통악기 #국악기 #진향국악기연구원 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #geomungo #gayageum #traditionalinstruments #traditional #stringinstrument #stringinstruments #koreanmusicalinstrument #korean #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 / Korean traditional instrument workshop", "e9a8e1b0-c8bd-4a04-b50f-4cdf12a8e365", "https://www.youtube.com/watch?v=NS2zceeIa-A", "NS2zceeIa-A", false, 1359, false, 13, "/downloads/FactoryTrip2022/2025-09-26 나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop/나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop [NS2zceeIa-A].mkv", false, false, 2, [], 98, ~U[2025-09-26 07:55:00Z], ~U[2025-12-23 08:34:35Z], ~U[2025-12-23 08:34:35Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#거문고 #가야금 #현악기 #전통 #악기장 #전통악기 #국악기 #진향국악기연구원 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #geomungo #gayageum #traditionalinstruments #traditional #stringinstrument #stringinstruments #koreanmusicalinstrument #korean #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 / Korean traditional instrument workshop", "https://www.youtube.com/watch?v=NS2zceeIa-A", "NS2zceeIa-A", 1359, false, "/downloads/FactoryTrip2022/2025-09-26 나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop/나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop [NS2zceeIa-A].mkv", false, 2, ~U[2025-09-26 07:55:00Z]] 08:34:35.532 [debug] QUERY OK source="sources" db=0.1ms idle=43.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:35.533 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-09-19 07:51:01Z], 2] 08:34:35.535 [debug] QUERY OK source="media_items" db=1.0ms idle=4.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 / Korean Wood Craft Binge Watch\n\n00:00 한국의 목탁 만드는 과정\n15:36 한국의 레진 테이블 만드는 과정\n41:56 한국의 당구 큐 만드는 과정\n55:47 한국의 업소용 소파 만드는 과정\n1:07:03 한국의 야구배트 만드는 과정\n1:13:10 한국의 독서대 만드는 과정\n1:24:13 한국의 소반 만드는 과정\n1:45:49 한국의 단소 만드는 과정\n1:58:24 한국의 특수목 거울 만드는 과정\n2:15:13 한국의 엔드그레인 도마 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#나무 #목공 #목공방 #목공예 #목공기계 #목탁 #레진 #레진공예 #레진아트 #레진테이블 #특수목 #당구큐 #소파 #수제 #야구 #야구배트 #독서대 #소반 #테이블 #반상 #나무테이블 #단소 #거울 #인테리어 #인테리어소품 #도마 #엔드그레인도마 #나무도마 #기계 #전문가 #기술자 #장인 #제작 #woodworking #wood #woodcraft #woodwork #woodcarving #wooden #woodscraft #woodart #woods #woodworkingart #woodproducts #woodworker #woodworkingtools #woodworkingtips #woodworkingvideo #moktak #woodblock #woodenbell #resinart #resin #resincrafts #resintable #billiardcue #billiards #sofa #couch #baseballbats #baseballbat #readingdesk #readingtable #bookholder #lectern #soban #woodtable #diningtable #instruments #danso #bambooflute #traditionalinstruments #interiordesign #mirror #endgrain #endgraincuttingboard #cuttingboards #cuttingboard #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 / Ultimate Korean Woodcraft Compilation", "75699ea3-7f8c-4e03-ad0a-b9fbfdc5a1b1", "https://www.youtube.com/watch?v=xoSdXqD1B74", "xoSdXqD1B74", false, 9091, false, 14, "/downloads/FactoryTrip2022/2025-09-19 죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 ⧸ Ultimate Korean Woodcraft Compilation/죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 ⧸ Ultimate Korean Woodcraft Compilation [xoSdXqD1B74].mkv", false, false, 2, [], 98, ~U[2025-09-19 07:51:01Z], ~U[2025-12-23 08:34:35Z], ~U[2025-12-23 08:34:35Z], "죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 / Korean Wood Craft Binge Watch\n\n00:00 한국의 목탁 만드는 과정\n15:36 한국의 레진 테이블 만드는 과정\n41:56 한국의 당구 큐 만드는 과정\n55:47 한국의 업소용 소파 만드는 과정\n1:07:03 한국의 야구배트 만드는 과정\n1:13:10 한국의 독서대 만드는 과정\n1:24:13 한국의 소반 만드는 과정\n1:45:49 한국의 단소 만드는 과정\n1:58:24 한국의 특수목 거울 만드는 과정\n2:15:13 한국의 엔드그레인 도마 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#나무 #목공 #목공방 #목공예 #목공기계 #목탁 #레진 #레진공예 #레진아트 #레진테이블 #특수목 #당구큐 #소파 #수제 #야구 #야구배트 #독서대 #소반 #테이블 #반상 #나무테이블 #단소 #거울 #인테리어 #인테리어소품 #도마 #엔드그레인도마 #나무도마 #기계 #전문가 #기술자 #장인 #제작 #woodworking #wood #woodcraft #woodwork #woodcarving #wooden #woodscraft #woodart #woods #woodworkingart #woodproducts #woodworker #woodworkingtools #woodworkingtips #woodworkingvideo #moktak #woodblock #woodenbell #resinart #resin #resincrafts #resintable #billiardcue #billiards #sofa #couch #baseballbats #baseballbat #readingdesk #readingtable #bookholder #lectern #soban #woodtable #diningtable #instruments #danso #bambooflute #traditionalinstruments #interiordesign #mirror #endgrain #endgraincuttingboard #cuttingboards #cuttingboard #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 / Ultimate Korean Woodcraft Compilation", "https://www.youtube.com/watch?v=xoSdXqD1B74", "xoSdXqD1B74", 9091, false, "/downloads/FactoryTrip2022/2025-09-19 죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 ⧸ Ultimate Korean Woodcraft Compilation/죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 ⧸ Ultimate Korean Woodcraft Compilation [xoSdXqD1B74].mkv", false, 2, ~U[2025-09-19 07:51:01Z]] 08:34:35.535 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [2] 08:34:35.536 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-09-12 08:01:04Z], 2] 08:34:35.537 [debug] QUERY OK source="media_items" db=0.8ms idle=3.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n#쇼핑백 #종이가방 #공장 #종이백 #종이포대 #신풍쇼핑백 #재단 #인쇄 #코팅 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #paper #bag #paperbag #paperbags #paperbagmakingmachine #paperbagmaking #shoppingbag #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 / Korean paperbag factory", "2b5f5409-c2bb-4cea-a187-a62e2f449748", "https://www.youtube.com/watch?v=q7bETTLIyn4", "q7bETTLIyn4", false, 653, false, 15, "/downloads/FactoryTrip2022/2025-09-12 수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 ⧸ Korean paperbag factory/수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 ⧸ Korean paperbag factory [q7bETTLIyn4].mkv", false, false, 2, [], 98, ~U[2025-09-12 08:01:04Z], ~U[2025-12-23 08:34:35Z], ~U[2025-12-23 08:34:35Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n#쇼핑백 #종이가방 #공장 #종이백 #종이포대 #신풍쇼핑백 #재단 #인쇄 #코팅 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #paper #bag #paperbag #paperbags #paperbagmakingmachine #paperbagmaking #shoppingbag #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 / Korean paperbag factory", "https://www.youtube.com/watch?v=q7bETTLIyn4", "q7bETTLIyn4", 653, false, "/downloads/FactoryTrip2022/2025-09-12 수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 ⧸ Korean paperbag factory/수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 ⧸ Korean paperbag factory [q7bETTLIyn4].mkv", false, 2, ~U[2025-09-12 08:01:04Z]] 08:34:35.538 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [2] 08:34:35.538 [debug] QUERY OK source="media_items" db=0.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[2025-09-05 08:00:31Z], 2] 08:34:35.540 [debug] QUERY OK source="media_items" db=0.9ms idle=3.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n\n#목공 #테이블 #특수목 #목재 #레진 #레진공예 #레진테이블 #우드 #우드슬랩 #식탁 #리폼 #고급 #페스툴 #단하나의나무 #장인 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #wood #woodworking #woodwork #woodworkingart #woodart #woodcraft #woodworker #woodworkingvideo #resin #resinart #resincrafts #resintable #woodtable #exoticwood #reform #restoration #restoredfurniture #festool #making #makingvideos #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 / Korean woodworking craftsman", "0e377d0f-e893-45f2-a72b-8809327670cf", "https://www.youtube.com/watch?v=HoVtRQ62b40", "HoVtRQ62b40", false, 1574, false, 16, "/downloads/FactoryTrip2022/2025-09-05 죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 ⧸ Korean woodworking craftsman/죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 ⧸ Korean woodworking craftsman [HoVtRQ62b40].mkv", false, false, 2, [], 98, ~U[2025-09-05 08:00:31Z], ~U[2025-12-23 08:34:35Z], ~U[2025-12-23 08:34:35Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n\n#목공 #테이블 #특수목 #목재 #레진 #레진공예 #레진테이블 #우드 #우드슬랩 #식탁 #리폼 #고급 #페스툴 #단하나의나무 #장인 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #wood #woodworking #woodwork #woodworkingart #woodart #woodcraft #woodworker #woodworkingvideo #resin #resinart #resincrafts #resintable #woodtable #exoticwood #reform #restoration #restoredfurniture #festool #making #makingvideos #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 / Korean woodworking craftsman", "https://www.youtube.com/watch?v=HoVtRQ62b40", "HoVtRQ62b40", 1574, false, "/downloads/FactoryTrip2022/2025-09-05 죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 ⧸ Korean woodworking craftsman/죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 ⧸ Korean woodworking craftsman [HoVtRQ62b40].mkv", false, 2, ~U[2025-09-05 08:00:31Z]] 08:34:35.540 [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" = ?) [2] 08:34:35.541 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-08-29 08:00:06Z], 2] 08:34:35.542 [debug] QUERY OK source="media_items" db=0.8ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 / Korean Leather Craft Binge Watch\n\n00:00 한국의 야구글러브 만드는 과정\n19:55 한국의 명품가방 리폼 과정\n53:31 한국의 소파 만드는 과정\n1:08:11 한국의 수제화 만드는 과정\n1:26:19 한국의 다이어리 만드는 과정\n1:41:24 한국의 북 만드는 과정\n1:58:24 한국의 카드지갑 만드는 과정\n2:10:40 한국의 등산화 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#가죽 #가죽공예 #가죽공방 #야구글러브 #가죽가방 #명품 #명품가방 #명품가방수선 #명품가방리폼 #리폼 #수선 #소파 #가죽소파 #수제화 #신발 #가죽신발 #다이어리 #북 #악기 #카드지갑 #지갑 #등산화 #공정 #과정 #기계 #전문가 #기술자 #장인 #제작 #leather #leathercraft #leatherworking #leatherworker #leathershoes #leatherbag #leatherproducts #leathercompany #baseballglove #baseballgloves #restoration #reform #sofa #couch #leathershoes #shoemaker #shoemaking #diary #planner #instruments #drums #koreandrum #traditionalinstruments #wallet #leatherwallets #leatherwallet #cardwallet #leathercardholder #hikingshoes #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 / Korean Leather Craft Compilation", "df9698ed-aca1-44cc-a82c-7c6ca96a042b", "https://www.youtube.com/watch?v=4SC6qyqBmM4", "4SC6qyqBmM4", false, 9463, false, 17, "/downloads/FactoryTrip2022/2025-08-29 가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 ⧸ Korean Leather Craft Compilation/가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 ⧸ Korean Leather Craft Compilation [4SC6qyqBmM4].mkv", false, false, 2, [], 98, ~U[2025-08-29 08:00:06Z], ~U[2025-12-23 08:34:35Z], ~U[2025-12-23 08:34:35Z], "가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 / Korean Leather Craft Binge Watch\n\n00:00 한국의 야구글러브 만드는 과정\n19:55 한국의 명품가방 리폼 과정\n53:31 한국의 소파 만드는 과정\n1:08:11 한국의 수제화 만드는 과정\n1:26:19 한국의 다이어리 만드는 과정\n1:41:24 한국의 북 만드는 과정\n1:58:24 한국의 카드지갑 만드는 과정\n2:10:40 한국의 등산화 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#가죽 #가죽공예 #가죽공방 #야구글러브 #가죽가방 #명품 #명품가방 #명품가방수선 #명품가방리폼 #리폼 #수선 #소파 #가죽소파 #수제화 #신발 #가죽신발 #다이어리 #북 #악기 #카드지갑 #지갑 #등산화 #공정 #과정 #기계 #전문가 #기술자 #장인 #제작 #leather #leathercraft #leatherworking #leatherworker #leathershoes #leatherbag #leatherproducts #leathercompany #baseballglove #baseballgloves #restoration #reform #sofa #couch #leathershoes #shoemaker #shoemaking #diary #planner #instruments #drums #koreandrum #traditionalinstruments #wallet #leatherwallets #leatherwallet #cardwallet #leathercardholder #hikingshoes #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 / Korean Leather Craft Compilation", "https://www.youtube.com/watch?v=4SC6qyqBmM4", "4SC6qyqBmM4", 9463, false, "/downloads/FactoryTrip2022/2025-08-29 가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 ⧸ Korean Leather Craft Compilation/가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 ⧸ Korean Leather Craft Compilation [4SC6qyqBmM4].mkv", false, 2, ~U[2025-08-29 08:00:06Z]] 08:34:35.543 [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" = ?) [2] 08:34:35.543 [debug] QUERY OK source="media_items" db=0.6ms 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[2025-08-22 08:00:03Z], 2] 08:34:35.545 [debug] QUERY OK source="media_items" db=1.2ms idle=3.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#서예 #붓 #필방 #서예용품 #캘리그라피 #세필붓 #채색붓 #서예붓 #천연모붓 #족제비모붓 #수제붓 #정호당필방 #전문가 #기술자 #장인 #필장 #공방 #공장 #제조 #과정 #생산 #제작 #메이킹 #brush #writingbrush #calligraphybrush #paintingbrushes #paintingbrush #calligraphy #brushmarkers #handmade #handmadebrush #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 / Korean Brush Workshop", "00359cf1-db98-47e9-b5af-4d0548c8d743", "https://www.youtube.com/watch?v=2HiSKOQtlXg", "2HiSKOQtlXg", false, 957, false, 18, "/downloads/FactoryTrip2022/2025-08-22 족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 ⧸ Korean Brush Workshop/족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 ⧸ Korean Brush Workshop [2HiSKOQtlXg].mkv", false, false, 2, [], 98, ~U[2025-08-22 08:00:03Z], ~U[2025-12-23 08:34:35Z], ~U[2025-12-23 08:34:35Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#서예 #붓 #필방 #서예용품 #캘리그라피 #세필붓 #채색붓 #서예붓 #천연모붓 #족제비모붓 #수제붓 #정호당필방 #전문가 #기술자 #장인 #필장 #공방 #공장 #제조 #과정 #생산 #제작 #메이킹 #brush #writingbrush #calligraphybrush #paintingbrushes #paintingbrush #calligraphy #brushmarkers #handmade #handmadebrush #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 / Korean Brush Workshop", "https://www.youtube.com/watch?v=2HiSKOQtlXg", "2HiSKOQtlXg", 957, false, "/downloads/FactoryTrip2022/2025-08-22 족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 ⧸ Korean Brush Workshop/족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 ⧸ Korean Brush Workshop [2HiSKOQtlXg].mkv", false, 2, ~U[2025-08-22 08:00:03Z]] 08:34:35.546 [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" = ?) [2] 08:34:35.547 [debug] QUERY OK source="media_items" db=0.6ms 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[2025-08-15 08:00:55Z], 2] 08:34:35.548 [debug] QUERY OK source="media_items" db=0.8ms idle=4.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVBc3WC_WNuI7xqcHKXrTbk4\n\n#김밥 #식품 #공장 #냉동김밥 #식품공장 #야채김밥 #풀드포크김밥 #불고기김밥 #제육김밥 #참치김밥 #진미채김밥 #이노하스 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #kfood #kimbap #gimbap #food #foodfactory #bulgogikimbap #vegetablekimbap #pulledporkkimbap #tunamayokimbap #kimchikimbap #innohas #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 / Korean food factory", "f5938baf-7ab5-4ba0-a4e8-d7edf699430f", "https://www.youtube.com/watch?v=go-BKd4XWhs", "go-BKd4XWhs", false, 625, false, 19, "/downloads/FactoryTrip2022/2025-08-15 케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 ⧸ Korean food factory/케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 ⧸ Korean food factory [go-BKd4XWhs].mkv", false, false, 2, [], 98, ~U[2025-08-15 08:00:55Z], ~U[2025-12-23 08:34:35Z], ~U[2025-12-23 08:34:35Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVBc3WC_WNuI7xqcHKXrTbk4\n\n#김밥 #식품 #공장 #냉동김밥 #식품공장 #야채김밥 #풀드포크김밥 #불고기김밥 #제육김밥 #참치김밥 #진미채김밥 #이노하스 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #kfood #kimbap #gimbap #food #foodfactory #bulgogikimbap #vegetablekimbap #pulledporkkimbap #tunamayokimbap #kimchikimbap #innohas #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 / Korean food factory", "https://www.youtube.com/watch?v=go-BKd4XWhs", "go-BKd4XWhs", 625, false, "/downloads/FactoryTrip2022/2025-08-15 케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 ⧸ Korean food factory/케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 ⧸ Korean food factory [go-BKd4XWhs].mkv", false, 2, ~U[2025-08-15 08:00:55Z]] 08:34:35.549 [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" = ?) [2] 08:34:35.550 [debug] QUERY OK source="media_items" db=0.6ms 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[2025-08-08 08:00:18Z], 2] 08:34:35.551 [debug] QUERY OK source="media_items" db=0.8ms idle=4.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#맷돌 #현무암 #공장 #석재 #커피맷돌 #전통맷돌 #철원 #부흥석재 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #millstone #stone #handmill #grindmill #stonecrafts #stonecraft #stoneart #stoneartist #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "이게 바위였다고요? 거대한 현무암으로 맷돌 만드는 과정. 한국의 석재 공장 / Korean stone factory", "1fb9d6db-ccb4-4ae9-8f8f-d529d10b0ecc", "https://www.youtube.com/watch?v=E5eEI-ejfzc", "E5eEI-ejfzc", false, 996, false, 20, "/downloads/FactoryTrip2022/2025-08-08 이게 바위였다고요? 거대한 현무암으로 맷돌 만드는 과정. 한국의 석재 공장 ⧸ Korean stone factory/이게 바위였다고요? 거대한 현무암으로 맷돌 만드는 과정. 한국의 석재 공장 ⧸ Korean stone factory [E5eEI-ejfzc].mkv", false, false, 2, [], 98, ~U[2025-08-08 08:00:18Z], ~U[2025-12-23 08:34:35Z], ~U[2025-12-23 08:34:35Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#맷돌 #현무암 #공장 #석재 #커피맷돌 #전통맷돌 #철원 #부흥석재 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #millstone #stone #handmill #grindmill #stonecrafts #stonecraft #stoneart #stoneartist #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "이게 바위였다고요? 거대한 현무암으로 맷돌 만드는 과정. 한국의 석재 공장 / Korean stone factory", "https://www.youtube.com/watch?v=E5eEI-ejfzc", "E5eEI-ejfzc", 996, false, "/downloads/FactoryTrip2022/2025-08-08 이게 바위였다고요? 거대한 현무암으로 맷돌 만드는 과정. 한국의 석재 공장 ⧸ Korean stone factory/이게 바위였다고요? 거대한 현무암으로 맷돌 만드는 과정. 한국의 석재 공장 ⧸ Korean stone factory [E5eEI-ejfzc].mkv", false, 2, ~U[2025-08-08 08:00:18Z]] 08:34:35.552 [debug] QUERY OK source="sources" db=0.3ms idle=4.5ms UPDATE "sources" SET "last_indexed_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2025-12-23 08:34:35Z], ~U[2025-12-23 08:34:35Z], 2] 08:34:35.552 [debug] QUERY OK source="media_items" db=0.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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [2] 08:34:35.553 [debug] QUERY OK source="media_items" db=0.6ms idle=3.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")))) [2] 08:34:35.554 [debug] QUERY OK source="media_items" db=0.2ms idle=3.8ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [2] 08:34:35.555 [debug] QUERY OK source="tasks" db=0.2ms idle=2.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [7404, 2, ~U[2025-12-23 08:34:35Z], ~U[2025-12-23 08:34:35Z]] 08:34:35.556 [info] {"args":{"id":2},"id":7355,"meta":{},"state":"success","max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","duration":51165251,"event":"job:stop","queue_time":933726,"attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 08:34:45.739 [info] {"source":"oban","duration":963,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:35:00.572 [info] {"source":"oban","duration":394,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:35:15.741 [info] {"source":"oban","duration":1061,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:35:45.743 [info] {"source":"oban","duration":1399,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:36:00.573 [info] {"source":"oban","duration":446,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:36:15.745 [info] {"source":"oban","duration":1057,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:36:45.747 [info] {"source":"oban","duration":1507,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:37:00.575 [info] {"source":"oban","duration":802,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:37:15.750 [info] {"source":"oban","duration":1529,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:37:45.752 [info] {"source":"oban","duration":1206,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:38:00.577 [info] {"source":"oban","duration":252,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:38:15.754 [info] {"source":"oban","duration":1451,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:38:45.756 [info] {"source":"oban","duration":1000,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:39:00.578 [info] {"source":"oban","duration":552,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:39:15.758 [info] {"source":"oban","duration":1330,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:39:45.760 [info] {"source":"oban","duration":1339,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:40:00.579 [info] {"source":"oban","duration":281,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:40:15.762 [info] {"source":"oban","duration":1311,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:40:45.764 [info] {"source":"oban","duration":762,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:41:00.581 [info] {"source":"oban","duration":741,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:41:15.766 [info] {"source":"oban","duration":1456,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:41:45.768 [info] {"source":"oban","duration":956,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:42:00.582 [info] {"source":"oban","duration":468,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:42:15.770 [info] {"source":"oban","duration":957,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:42:45.772 [info] {"source":"oban","duration":1089,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:43:00.584 [info] {"source":"oban","duration":1293,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:43:15.774 [info] {"source":"oban","duration":1321,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:43:45.777 [info] {"source":"oban","duration":1727,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:44:00.585 [info] {"source":"oban","duration":318,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:44:15.778 [info] {"source":"oban","duration":1239,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:44:45.780 [info] {"source":"oban","duration":1335,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:45:00.586 [info] {"source":"oban","duration":285,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:45:15.783 [info] {"source":"oban","duration":1682,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:45:45.784 [info] {"source":"oban","duration":920,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:46:00.588 [info] {"source":"oban","duration":881,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:46:15.786 [info] {"source":"oban","duration":961,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:46:45.788 [info] {"source":"oban","duration":1111,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:47:00.589 [info] {"source":"oban","duration":602,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:47:15.790 [info] {"source":"oban","duration":1102,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:47:45.792 [info] {"source":"oban","duration":1592,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:48:00.590 [info] {"source":"oban","duration":343,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:48:15.795 [info] {"source":"oban","duration":1116,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:48:45.796 [info] {"source":"oban","duration":1310,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:49:00.592 [info] {"source":"oban","duration":411,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:49:15.798 [info] {"source":"oban","duration":1101,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:49:45.801 [info] {"source":"oban","duration":1692,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:50:00.594 [info] {"source":"oban","duration":721,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:50:15.803 [info] {"source":"oban","duration":2083,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:50:45.805 [info] {"source":"oban","duration":1288,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:51:00.595 [info] {"source":"oban","duration":521,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:51:15.807 [info] {"source":"oban","duration":1004,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:51:45.809 [info] {"source":"oban","duration":957,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:51:54.601 [info] {"args":{"id":7},"id":7356,"meta":{},"system_time":1766479914600918598,"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"]} 08:51:54.601 [debug] QUERY OK source="sources" db=0.2ms idle=931.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:51:54.601 [debug] QUERY OK source="settings" db=0.2ms idle=932.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:54.602 [debug] QUERY OK source="media_items" db=0.7ms idle=932.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] 08:51:54.603 [debug] QUERY OK source="media_items" db=0.1ms idle=9.5ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [7] 08:51:54.603 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=2.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:51:54.604 [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 [] 08:51:54.604 [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 [] 08:51:54.606 [debug] QUERY OK source="media_items" db=1.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."source_id" = ?) ORDER BY m0."uploaded_at" DESC LIMIT 50 OFFSET 20 [7] 08:51:54.607 [debug] Running yt-dlp command for action: get_media_attributes_for_collection 08:51:54.607 [debug] Current batch of media processed. Will check again in 1000ms 08:51:54.607 [debug] QUERY OK source="settings" db=0.1ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:51:54.607 [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 [] 08:51:54.608 [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 [] 08:51:54.608 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@JeffGeerling --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/JeffGeerling/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/fb/53/fb53aebe55354d9d221176422d5feddd43e238c96dad99d3dca0be39a56051db.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/88/a6/88a64b38b34e32014fd355157fe1e30ab94268ccdaf19f36951ec3e25b0fb091.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 08:51:55.608 [debug] Current batch of media processed. Will check again in 1000ms 08:51:56.609 [debug] Current batch of media processed. Will check again in 1000ms 08:51:57.611 [debug] Current batch of media processed. Will check again in 1000ms 08:51:58.613 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "...but most people would never know.\n\nThe two posts referenced in this video:\n\n - Primary time scale failure: https://groups.google.com/a/list.nist.gov/g/internet-time-service/c/o0dDDcr1a8I\n - Update on Internet Time Services: https://groups.google.com/a/list.nist.gov/g/internet-time-service/c/OHOO_1OYjLY\n\nAlso check out the status of all NIST Internet Time Servers: https://tf.nist.gov/tf-cgi/servers.cgi\n\nThumbnail photos were adapted from Wikipedia Commons / US Government Public domain images:\n\n - https://www.nist.gov/pml/time-and-frequency-division/time-and-frequency-metrology-and-distribution\n - https://www.nist.gov/topics/physics/optical-frequency-combs\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - 5 microseconds\n00:39 - What happened?\n02:15 - NTP timing and why it doesn't matter\n03:17 - Timely lessons", "duration" => 317, "filename" => "/downloads/JeffGeerling/2025-12-22 NIST's NTP clock was microseconds from disaster/NIST's NTP clock was microseconds from disaster [ZRB7pjRVVkI].mkv", "id" => "ZRB7pjRVVkI", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=ZRB7pjRVVkI", "playlist_index" => 1, "timestamp" => 1766420589, "title" => "NIST's NTP clock was microseconds from disaster", "upload_date" => "20251222"} 08:51:58.614 [debug] QUERY OK source="sources" db=0.2ms idle=944.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:51:58.614 [debug] QUERY OK source="sources" db=0.2ms idle=944.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:51:58.615 [debug] QUERY OK source="media_items" db=0.6ms 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[2025-12-22 16:23:09Z], 7] 08:51:58.616 [debug] QUERY OK source="media_items" db=0.9ms idle=946.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["...but most people would never know.\n\nThe two posts referenced in this video:\n\n - Primary time scale failure: https://groups.google.com/a/list.nist.gov/g/internet-time-service/c/o0dDDcr1a8I\n - Update on Internet Time Services: https://groups.google.com/a/list.nist.gov/g/internet-time-service/c/OHOO_1OYjLY\n\nAlso check out the status of all NIST Internet Time Servers: https://tf.nist.gov/tf-cgi/servers.cgi\n\nThumbnail photos were adapted from Wikipedia Commons / US Government Public domain images:\n\n - https://www.nist.gov/pml/time-and-frequency-division/time-and-frequency-metrology-and-distribution\n - https://www.nist.gov/topics/physics/optical-frequency-combs\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - 5 microseconds\n00:39 - What happened?\n02:15 - NTP timing and why it doesn't matter\n03:17 - Timely lessons", "NIST's NTP clock was microseconds from disaster", "5336ef72-c49e-4618-81ff-133649b3258b", "https://www.youtube.com/watch?v=ZRB7pjRVVkI", "ZRB7pjRVVkI", false, 317, false, 1, "/downloads/JeffGeerling/2025-12-22 NIST's NTP clock was microseconds from disaster/NIST's NTP clock was microseconds from disaster [ZRB7pjRVVkI].mkv", false, false, 7, [], 99, ~U[2025-12-22 16:23:09Z], ~U[2025-12-23 08:51:58Z], ~U[2025-12-23 08:51:58Z], "...but most people would never know.\n\nThe two posts referenced in this video:\n\n - Primary time scale failure: https://groups.google.com/a/list.nist.gov/g/internet-time-service/c/o0dDDcr1a8I\n - Update on Internet Time Services: https://groups.google.com/a/list.nist.gov/g/internet-time-service/c/OHOO_1OYjLY\n\nAlso check out the status of all NIST Internet Time Servers: https://tf.nist.gov/tf-cgi/servers.cgi\n\nThumbnail photos were adapted from Wikipedia Commons / US Government Public domain images:\n\n - https://www.nist.gov/pml/time-and-frequency-division/time-and-frequency-metrology-and-distribution\n - https://www.nist.gov/topics/physics/optical-frequency-combs\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - 5 microseconds\n00:39 - What happened?\n02:15 - NTP timing and why it doesn't matter\n03:17 - Timely lessons", "NIST's NTP clock was microseconds from disaster", "https://www.youtube.com/watch?v=ZRB7pjRVVkI", "ZRB7pjRVVkI", 317, false, "/downloads/JeffGeerling/2025-12-22 NIST's NTP clock was microseconds from disaster/NIST's NTP clock was microseconds from disaster [ZRB7pjRVVkI].mkv", false, 7, ~U[2025-12-22 16:23:09Z]] 08:51:58.617 [debug] QUERY OK source="sources" db=0.2ms idle=15.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 08:51:58.617 [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] 08:51:58.618 [debug] QUERY OK source="media_items" db=0.2ms 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 [29046] 08:51:58.618 [info] Kicking off download for media item #29046 (ZRB7pjRVVkI) 08:51:58.619 [debug] QUERY OK source="tasks" db=0.2ms idle=2.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [7405, 29046, ~U[2025-12-23 08:51:58Z], ~U[2025-12-23 08:51:58Z]] 08:51:58.620 [debug] Current batch of media processed. Will check again in 1000ms 08:51:58.626 [info] {"args":{"id":29046},"id":7405,"meta":{},"system_time":1766479918626277120,"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"]} 08:51:58.626 [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" = ?) [29046] 08:51:58.627 [info] User scripts lifecyle file either not present or is empty. Skipping. 08:51:58.627 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 08:51:58.627 [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] 08:51:58.628 [debug] QUERY OK source="media_items" db=0.2ms 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 [29046] 08:51:58.639 [debug] QUERY OK source="media_metadata" db=0.1ms idle=13.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" = ?) [29046] 08:51:58.639 [debug] QUERY OK source="media_profiles" db=0.1ms idle=12.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:51:58.640 [debug] QUERY OK source="settings" db=0.1ms idle=12.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:51:58.640 [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 [] 08:51:58.640 [debug] Running yt-dlp command for action: get_downloadable_status 08:51:58.641 [debug] QUERY OK source="settings" db=0.0ms 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 [] 08:51:58.641 [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 [] 08:51:58.641 [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 [] 08:51:58.641 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZRB7pjRVVkI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0f/8f/0f8fd73e1b320a3c6ef6500f6a396473157d0aae131053b605bda4cf9b8d9715.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 08:51:59.620 [debug] Current batch of media processed. Will check again in 1000ms 08:52:00.596 [info] {"source":"oban","duration":360,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:52:00.621 [debug] Current batch of media processed. Will check again in 1000ms 08:52:01.622 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Shop Micro Center Holiday Deals: https://micro.center/e787eb\nCheck out Micro Center's Other Top Deals: https://micro.center/315b05\nShop Micro Center Bundles: https://micro.center/f7b037\nVisit Micro Center News: https://micro.center/9b77f2\n\nCan a Raspberry Pi match the performance of a modern desktop PC when it comes to GPU performance?\n\nOf course not, in a general sense. But there are specific use cases where you'd be surprised by how close the Pi comes, performance-wise. In some cases, the Pi is actually faster!\n\nResources I mentioned in this video:\n\n - AI Benchmark results and methodology: https://github.com/geerlingguy/ai-benchmarks\n - Multi-GPU benchmark results: https://github.com/geerlingguy/ai-benchmarks/issues/44\n - Use AMD GPUs on Pi: https://www.jeffgeerling.com/blog/2025/using-amd-gpus-on-raspberry-pi-without-recompiling-linux\n - Use Nvidia GPUs on Pi: https://www.jeffgeerling.com/blog/2025/nvidia-graphics-cards-work-on-pi-5-and-rockchip\n - Use Intel GPUs on Pi: https://www.jeffgeerling.com/blog/2025/all-intel-gpus-run-on-raspberry-pi-and-risc-v\n\neGPU Setup (some links are affiliate links):\n\n - Minisforum DEG1 eGPU Dock: https://amzn.to/4s3gUz6\n - Micro SATA Cables Oculink to M.2 adapter: https://amzn.to/49dKKcE\n - Super Flower 850W PSU: https://www.microcenter.com/product/684393/super-flower-leadex-iii-gold-up-850-watt-80-plus-gold-atx-fully-modular-power-supply-atx-31-compatible\n - AMD Radeon AI Pro R9700: https://www.microcenter.com/product/702853/xfx-amd-radeon-ai-pro-r9700-single-fan-32gb-gddr6-pcie-50-graphics-card\n\nDual GPU Setup (some links are affiliate links):\n\n - chenyang PCIe 4.0 M.2 NGFF to SFF-8643: https://amzn.to/4pyqSqt\n - 10Gtek SFF-8644 to SFF-8643 Cable: https://amzn.to/3MKNbup\n - Dolphin PCIe HBA MXH932: https://dolphinics.com/products/MXH932.html\n - Dolphin 3 slot PCIe Backplane: https://dolphinics.com/products/IBP-G4X16-3.html\n\nHUGE thanks to Patrick from @ServeTheHomeVideo for helping me record at Micro Center in Phoenix :)\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Pi vs PC\n00:53 - Enough for Jellyfin? Local LLMs?\n01:50 - 4 GPUs 1 Pi\n02:16 - Comparing costs and energy use\n03:07 - Gaming on haitus (for now)\n03:39 - The setups\n04:56 - ffmpeg and Jellyfin media transcoding\n07:31 - 3D rendering with GravityMark\n08:39 - LLMs on AMD\n09:36 - LLMs on Nvidia\n12:27 - Drivers, Vulkan, and CUDA\n13:06 - Dual GPU - Setup\n15:24 - Sharing memory and PCIe ACS\n16:28 - llama.cpp performance - mixed Nvidia GPUs\n17:08 - 52GB of VRAM on AMD\n17:28 - Intel PC dual Nvidia GPU comparison\n17:56 - Who wins?", "duration" => 1120, "filename" => "/downloads/JeffGeerling/2025-12-20 2 GPUs 1 Pi/2 GPUs 1 Pi [8X2Y62JGDCo].mkv", "id" => "8X2Y62JGDCo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=8X2Y62JGDCo", "playlist_index" => 2, "timestamp" => 1766242824, "title" => "2 GPUs 1 Pi", "upload_date" => "20251220"} 08:52:01.623 [debug] QUERY OK source="sources" db=0.1ms idle=1953.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] 08:52:01.623 [debug] QUERY OK source="sources" db=0.2ms idle=1953.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:52:01.624 [debug] QUERY OK source="media_items" db=0.7ms idle=1026.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-20 15:00:24Z], 7] 08:52:01.626 [debug] QUERY OK source="media_items" db=1.2ms idle=1019.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Shop Micro Center Holiday Deals: https://micro.center/e787eb\nCheck out Micro Center's Other Top Deals: https://micro.center/315b05\nShop Micro Center Bundles: https://micro.center/f7b037\nVisit Micro Center News: https://micro.center/9b77f2\n\nCan a Raspberry Pi match the performance of a modern desktop PC when it comes to GPU performance?\n\nOf course not, in a general sense. But there are specific use cases where you'd be surprised by how close the Pi comes, performance-wise. In some cases, the Pi is actually faster!\n\nResources I mentioned in this video:\n\n - AI Benchmark results and methodology: https://github.com/geerlingguy/ai-benchmarks\n - Multi-GPU benchmark results: https://github.com/geerlingguy/ai-benchmarks/issues/44\n - Use AMD GPUs on Pi: https://www.jeffgeerling.com/blog/2025/using-amd-gpus-on-raspberry-pi-without-recompiling-linux\n - Use Nvidia GPUs on Pi: https://www.jeffgeerling.com/blog/2025/nvidia-graphics-cards-work-on-pi-5-and-rockchip\n - Use Intel GPUs on Pi: https://www.jeffgeerling.com/blog/2025/all-intel-gpus-run-on-raspberry-pi-and-risc-v\n\neGPU Setup (some links are affiliate links):\n\n - Minisforum DEG1 eGPU Dock: https://amzn.to/4s3gUz6\n - Micro SATA Cables Oculink to M.2 adapter: https://amzn.to/49dKKcE\n - Super Flower 850W PSU: https://www.microcenter.com/product/684393/super-flower-leadex-iii-gold-up-850-watt-80-plus-gold-atx-fully-modular-power-supply-atx-31-compatible\n - AMD Radeon AI Pro R9700: https://www.microcenter.com/product/702853/xfx-amd-radeon-ai-pro-r9700-single-fan-32gb-gddr6-pcie-50-graphics-card\n\nDual GPU Setup (some links are affiliate links):\n\n - chenyang PCIe 4.0 M.2 NGFF to SFF-8643: https://amzn.to/4pyqSqt\n - 10Gtek SFF-8644 to SFF-8643 Cable: https://amzn.to/3MKNbup\n - Dolphin PCIe HBA MXH932: https://dolphinics.com/products/MXH932.html\n - Dolphin 3 slot PCIe Backplane: https://dolphinics.com/products/IBP-G4X16-3.html\n\nHUGE thanks to Patrick from @ServeTheHomeVideo for helping me record at Micro Center in Phoenix :)\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Pi vs PC\n00:53 - Enough for Jellyfin? Local LLMs?\n01:50 - 4 GPUs 1 Pi\n02:16 - Comparing costs and energy use\n03:07 - Gaming on haitus (for now)\n03:39 - The setups\n04:56 - ffmpeg and Jellyfin media transcoding\n07:31 - 3D rendering with GravityMark\n08:39 - LLMs on AMD\n09:36 - LLMs on Nvidia\n12:27 - Drivers, Vulkan, and CUDA\n13:06 - Dual GPU - Setup\n15:24 - Sharing memory and PCIe ACS\n16:28 - llama.cpp performance - mixed Nvidia GPUs\n17:08 - 52GB of VRAM on AMD\n17:28 - Intel PC dual Nvidia GPU comparison\n17:56 - Who wins?", "2 GPUs 1 Pi", "ed6e97a6-0f05-4b86-b528-649edea3fec9", "https://www.youtube.com/watch?v=8X2Y62JGDCo", "8X2Y62JGDCo", false, 1120, false, 2, "/downloads/JeffGeerling/2025-12-20 2 GPUs 1 Pi/2 GPUs 1 Pi [8X2Y62JGDCo].mkv", false, false, 7, [], 98, ~U[2025-12-20 15:00:24Z], ~U[2025-12-23 08:52:01Z], ~U[2025-12-23 08:52:01Z], "Shop Micro Center Holiday Deals: https://micro.center/e787eb\nCheck out Micro Center's Other Top Deals: https://micro.center/315b05\nShop Micro Center Bundles: https://micro.center/f7b037\nVisit Micro Center News: https://micro.center/9b77f2\n\nCan a Raspberry Pi match the performance of a modern desktop PC when it comes to GPU performance?\n\nOf course not, in a general sense. But there are specific use cases where you'd be surprised by how close the Pi comes, performance-wise. In some cases, the Pi is actually faster!\n\nResources I mentioned in this video:\n\n - AI Benchmark results and methodology: https://github.com/geerlingguy/ai-benchmarks\n - Multi-GPU benchmark results: https://github.com/geerlingguy/ai-benchmarks/issues/44\n - Use AMD GPUs on Pi: https://www.jeffgeerling.com/blog/2025/using-amd-gpus-on-raspberry-pi-without-recompiling-linux\n - Use Nvidia GPUs on Pi: https://www.jeffgeerling.com/blog/2025/nvidia-graphics-cards-work-on-pi-5-and-rockchip\n - Use Intel GPUs on Pi: https://www.jeffgeerling.com/blog/2025/all-intel-gpus-run-on-raspberry-pi-and-risc-v\n\neGPU Setup (some links are affiliate links):\n\n - Minisforum DEG1 eGPU Dock: https://amzn.to/4s3gUz6\n - Micro SATA Cables Oculink to M.2 adapter: https://amzn.to/49dKKcE\n - Super Flower 850W PSU: https://www.microcenter.com/product/684393/super-flower-leadex-iii-gold-up-850-watt-80-plus-gold-atx-fully-modular-power-supply-atx-31-compatible\n - AMD Radeon AI Pro R9700: https://www.microcenter.com/product/702853/xfx-amd-radeon-ai-pro-r9700-single-fan-32gb-gddr6-pcie-50-graphics-card\n\nDual GPU Setup (some links are affiliate links):\n\n - chenyang PCIe 4.0 M.2 NGFF to SFF-8643: https://amzn.to/4pyqSqt\n - 10Gtek SFF-8644 to SFF-8643 Cable: https://amzn.to/3MKNbup\n - Dolphin PCIe HBA MXH932: https://dolphinics.com/products/MXH932.html\n - Dolphin 3 slot PCIe Backplane: https://dolphinics.com/products/IBP-G4X16-3.html\n\nHUGE thanks to Patrick from @ServeTheHomeVideo for helping me record at Micro Center in Phoenix :)\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Pi vs PC\n00:53 - Enough for Jellyfin? Local LLMs?\n01:50 - 4 GPUs 1 Pi\n02:16 - Comparing costs and energy use\n03:07 - Gaming on haitus (for now)\n03:39 - The setups\n04:56 - ffmpeg and Jellyfin media transcoding\n07:31 - 3D rendering with GravityMark\n08:39 - LLMs on AMD\n09:36 - LLMs on Nvidia\n12:27 - Drivers, Vulkan, and CUDA\n13:06 - Dual GPU - Setup\n15:24 - Sharing memory and PCIe ACS\n16:28 - llama.cpp performance - mixed Nvidia GPUs\n17:08 - 52GB of VRAM on AMD\n17:28 - Intel PC dual Nvidia GPU comparison\n17:56 - Who wins?", "2 GPUs 1 Pi", "https://www.youtube.com/watch?v=8X2Y62JGDCo", "8X2Y62JGDCo", 1120, false, "/downloads/JeffGeerling/2025-12-20 2 GPUs 1 Pi/2 GPUs 1 Pi [8X2Y62JGDCo].mkv", false, 7, ~U[2025-12-20 15:00:24Z]] 08:52:01.626 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [7] 08:52:01.627 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:52:01.627 [debug] QUERY OK source="media_items" db=0.2ms 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 [28489] 08:52:01.628 [debug] Current batch of media processed. Will check again in 1000ms 08:52:02.008 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZRB7pjRVVkI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0f/8f/0f8fd73e1b320a3c6ef6500f6a396473157d0aae131053b605bda4cf9b8d9715.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: [youtube] ZRB7pjRVVkI: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] ZRB7pjRVVkI: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 08:52:02.008 [debug] Running yt-dlp command for action: download 08:52:02.009 [debug] QUERY OK source="settings" db=0.4ms idle=384.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:52:02.009 [debug] QUERY OK source="settings" db=0.1ms idle=383.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:52:02.010 [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 [] 08:52:02.010 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZRB7pjRVVkI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/JeffGeerling/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/JeffGeerling/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/bd/c7/bdc723133d6effe6a6f7aa6bc38d979a7cbe7f8b31734fb74bfaf6240c8dd111.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 08:52:02.628 [debug] Current batch of media processed. Will check again in 1000ms 08:52:03.629 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "RDMA over Thunderbolt support landed in macOS 26.2.\n\nIs it good for HPC? For Exo and LLMs? Find out in this video.\n\nResources (some links are affiliate links):\n\n - Mac Studio: https://www.apple.com/mac-studio/\n - Exo 1.0: https://exolabs.net\n - Apple MLX PR for Thunderbolt RDMA: https://github.com/ml-explore/mlx/pull/2808\n - M5 Neural Accelerator speedup: https://machinelearning.apple.com/research/exploring-llms-mlx-m5\n - DeskPi Rackmate TL1: https://amzn.to/4p5ek94\n - Tupavco mini-rack PDU: https://amzn.to/4j0DpAq\n\nDisclaimer: The Mac Studios used in this cluster are on loan from Apple for testing. They are not sponsoring this video, nor had any say in the contents. DeskPi sent the Rackmate TL1 used in the video for my testing, but they also had no say in the video contents. I always add the \"sponsored\" flag on my videos if I did not purchase the equipment being shown.\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - A rack-full of Macs\n02:01 - Putting together a cluster\n03:16 - The downsides of Thunderbolt\n05:09 - One is enough\n07:45 - Managing macOS in a cluster (vs Linux)\n08:37 - HPL and llama.cpp cluster performance\n09:30 - Enabling RDMA\n09:51 - Massive LLMs\n11:34 - RDMA over TB5 is great... when it works\n12:10 - EXO community and OSS\n12:51 - Apple could go harder\n13:30 - Jack of all trades, not just AI", "duration" => 865, "filename" => "/downloads/JeffGeerling/2025-12-18 Apple didn't have to go this hard..#/Apple didn't have to go this hard... [x4_RsUxRjKU].mkv", "id" => "x4_RsUxRjKU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=x4_RsUxRjKU", "playlist_index" => 3, "timestamp" => 1766066507, "title" => "Apple didn't have to go this hard...", "upload_date" => "20251218"} 08:52:03.630 [debug] QUERY OK source="sources" db=0.4ms idle=1620.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] 08:52:03.631 [debug] QUERY OK source="sources" db=0.3ms idle=1620.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:52:03.632 [debug] QUERY OK source="media_items" db=0.8ms queue=0.1ms idle=1021.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-18 14:01:47Z], 7] 08:52:03.634 [debug] QUERY OK source="media_items" db=1.1ms idle=963.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["RDMA over Thunderbolt support landed in macOS 26.2.\n\nIs it good for HPC? For Exo and LLMs? Find out in this video.\n\nResources (some links are affiliate links):\n\n - Mac Studio: https://www.apple.com/mac-studio/\n - Exo 1.0: https://exolabs.net\n - Apple MLX PR for Thunderbolt RDMA: https://github.com/ml-explore/mlx/pull/2808\n - M5 Neural Accelerator speedup: https://machinelearning.apple.com/research/exploring-llms-mlx-m5\n - DeskPi Rackmate TL1: https://amzn.to/4p5ek94\n - Tupavco mini-rack PDU: https://amzn.to/4j0DpAq\n\nDisclaimer: The Mac Studios used in this cluster are on loan from Apple for testing. They are not sponsoring this video, nor had any say in the contents. DeskPi sent the Rackmate TL1 used in the video for my testing, but they also had no say in the video contents. I always add the \"sponsored\" flag on my videos if I did not purchase the equipment being shown.\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - A rack-full of Macs\n02:01 - Putting together a cluster\n03:16 - The downsides of Thunderbolt\n05:09 - One is enough\n07:45 - Managing macOS in a cluster (vs Linux)\n08:37 - HPL and llama.cpp cluster performance\n09:30 - Enabling RDMA\n09:51 - Massive LLMs\n11:34 - RDMA over TB5 is great... when it works\n12:10 - EXO community and OSS\n12:51 - Apple could go harder\n13:30 - Jack of all trades, not just AI", "Apple didn't have to go this hard...", "ec9b7393-e1d8-4dce-8c93-6150bc444c01", "https://www.youtube.com/watch?v=x4_RsUxRjKU", "x4_RsUxRjKU", false, 865, false, 3, "/downloads/JeffGeerling/2025-12-18 Apple didn't have to go this hard..#/Apple didn't have to go this hard... [x4_RsUxRjKU].mkv", false, false, 7, [], 98, ~U[2025-12-18 14:01:47Z], ~U[2025-12-23 08:52:03Z], ~U[2025-12-23 08:52:03Z], "RDMA over Thunderbolt support landed in macOS 26.2.\n\nIs it good for HPC? For Exo and LLMs? Find out in this video.\n\nResources (some links are affiliate links):\n\n - Mac Studio: https://www.apple.com/mac-studio/\n - Exo 1.0: https://exolabs.net\n - Apple MLX PR for Thunderbolt RDMA: https://github.com/ml-explore/mlx/pull/2808\n - M5 Neural Accelerator speedup: https://machinelearning.apple.com/research/exploring-llms-mlx-m5\n - DeskPi Rackmate TL1: https://amzn.to/4p5ek94\n - Tupavco mini-rack PDU: https://amzn.to/4j0DpAq\n\nDisclaimer: The Mac Studios used in this cluster are on loan from Apple for testing. They are not sponsoring this video, nor had any say in the contents. DeskPi sent the Rackmate TL1 used in the video for my testing, but they also had no say in the video contents. I always add the \"sponsored\" flag on my videos if I did not purchase the equipment being shown.\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - A rack-full of Macs\n02:01 - Putting together a cluster\n03:16 - The downsides of Thunderbolt\n05:09 - One is enough\n07:45 - Managing macOS in a cluster (vs Linux)\n08:37 - HPL and llama.cpp cluster performance\n09:30 - Enabling RDMA\n09:51 - Massive LLMs\n11:34 - RDMA over TB5 is great... when it works\n12:10 - EXO community and OSS\n12:51 - Apple could go harder\n13:30 - Jack of all trades, not just AI", "Apple didn't have to go this hard...", "https://www.youtube.com/watch?v=x4_RsUxRjKU", "x4_RsUxRjKU", 865, false, "/downloads/JeffGeerling/2025-12-18 Apple didn't have to go this hard..#/Apple didn't have to go this hard... [x4_RsUxRjKU].mkv", false, 7, ~U[2025-12-18 14:01:47Z]] 08:52:03.634 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=22.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 08:52:03.635 [debug] QUERY OK source="media_profiles" db=0.3ms idle=4.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:52:03.636 [debug] QUERY OK source="media_items" db=0.3ms 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 [27933] 08:52:03.636 [debug] Current batch of media processed. Will check again in 1000ms 08:52:04.637 [debug] Current batch of media processed. Will check again in 1000ms 08:52:05.638 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Raspberry Pi launched the CM0... in China. Let's take a look at this little stamp-sized Pi.\n\nResources mentioned in this video:\n\n - My test data and discussion: https://github.com/geerlingguy/sbc-reviews/issues/98\n - ED-CM0NANO from EDAtec: https://edatec.cn/docs/cm0nano/ds/\n - Raspberry Pi CM0 discussion on the Pi forum: https://forums.raspberrypi.com/viewtopic.php?t=386639\n - Order the ED-CM0NANO-10000 from DigiKey: https://www.digikey.com/en/products/detail/eda-technology-co-ltd/ED-CM0NANO-10000/28263891\n - Hackster article on CM0: https://www.hackster.io/news/raspberry-pi-unveils-the-18-compute-module-0-but-only-for-chinese-customers-for-now-913bf59ab6cc\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Castellated Computing\n01:01 - EDAtec's CM0NANO dev board\n01:34 - Flashing the CM0's slow eMMC\n02:02 - Chromium runs, but it's not for that\n02:42 - Why in China?", "duration" => 237, "filename" => "/downloads/JeffGeerling/2025-12-12 You can't buy this Raspberry Pi (except in China)/You can't buy this Raspberry Pi (except in China) [Q6FIcyhjoVo].mkv", "id" => "Q6FIcyhjoVo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Q6FIcyhjoVo", "playlist_index" => 4, "timestamp" => 1765551658, "title" => "You can't buy this Raspberry Pi (except in China)", "upload_date" => "20251212"} 08:52:05.639 [debug] QUERY OK source="sources" db=0.3ms idle=969.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:52:05.639 [debug] QUERY OK source="sources" db=0.1ms idle=970.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:52:05.640 [debug] QUERY OK source="media_items" db=0.6ms idle=970.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-12 15:00:58Z], 7] 08:52:05.642 [debug] QUERY OK source="media_items" db=0.9ms idle=971.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Raspberry Pi launched the CM0... in China. Let's take a look at this little stamp-sized Pi.\n\nResources mentioned in this video:\n\n - My test data and discussion: https://github.com/geerlingguy/sbc-reviews/issues/98\n - ED-CM0NANO from EDAtec: https://edatec.cn/docs/cm0nano/ds/\n - Raspberry Pi CM0 discussion on the Pi forum: https://forums.raspberrypi.com/viewtopic.php?t=386639\n - Order the ED-CM0NANO-10000 from DigiKey: https://www.digikey.com/en/products/detail/eda-technology-co-ltd/ED-CM0NANO-10000/28263891\n - Hackster article on CM0: https://www.hackster.io/news/raspberry-pi-unveils-the-18-compute-module-0-but-only-for-chinese-customers-for-now-913bf59ab6cc\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Castellated Computing\n01:01 - EDAtec's CM0NANO dev board\n01:34 - Flashing the CM0's slow eMMC\n02:02 - Chromium runs, but it's not for that\n02:42 - Why in China?", "You can't buy this Raspberry Pi (except in China)", "9fa05215-fd6a-477f-9124-62a51b00f549", "https://www.youtube.com/watch?v=Q6FIcyhjoVo", "Q6FIcyhjoVo", false, 237, false, 4, "/downloads/JeffGeerling/2025-12-12 You can't buy this Raspberry Pi (except in China)/You can't buy this Raspberry Pi (except in China) [Q6FIcyhjoVo].mkv", false, false, 7, [], 98, ~U[2025-12-12 15:00:58Z], ~U[2025-12-23 08:52:05Z], ~U[2025-12-23 08:52:05Z], "Raspberry Pi launched the CM0... in China. Let's take a look at this little stamp-sized Pi.\n\nResources mentioned in this video:\n\n - My test data and discussion: https://github.com/geerlingguy/sbc-reviews/issues/98\n - ED-CM0NANO from EDAtec: https://edatec.cn/docs/cm0nano/ds/\n - Raspberry Pi CM0 discussion on the Pi forum: https://forums.raspberrypi.com/viewtopic.php?t=386639\n - Order the ED-CM0NANO-10000 from DigiKey: https://www.digikey.com/en/products/detail/eda-technology-co-ltd/ED-CM0NANO-10000/28263891\n - Hackster article on CM0: https://www.hackster.io/news/raspberry-pi-unveils-the-18-compute-module-0-but-only-for-chinese-customers-for-now-913bf59ab6cc\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Castellated Computing\n01:01 - EDAtec's CM0NANO dev board\n01:34 - Flashing the CM0's slow eMMC\n02:02 - Chromium runs, but it's not for that\n02:42 - Why in China?", "You can't buy this Raspberry Pi (except in China)", "https://www.youtube.com/watch?v=Q6FIcyhjoVo", "Q6FIcyhjoVo", 237, false, "/downloads/JeffGeerling/2025-12-12 You can't buy this Raspberry Pi (except in China)/You can't buy this Raspberry Pi (except in China) [Q6FIcyhjoVo].mkv", false, 7, ~U[2025-12-12 15:00:58Z]] 08:52:05.642 [debug] QUERY OK source="sources" db=0.2ms idle=27.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 08:52:05.643 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:52:05.643 [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 [26272] 08:52:05.643 [debug] Current batch of media processed. Will check again in 1000ms 08:52:06.644 [debug] Current batch of media processed. Will check again in 1000ms 08:52:07.645 [debug] Current batch of media processed. Will check again in 1000ms 08:52:08.646 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "It's a Framework 13, but there's no ordinary CPU inside...\n\nResources I mentioned in this video:\n\n - DeepComputing DC-ROMA II: https://store.deepcomputing.io/products/dc-roma-ai-pc-risc-v-mainboard-ii-for-framework-laptop-13\n - All my benchmarking data: https://github.com/geerlingguy/sbc-reviews/issues/82\n - Framework 13 with AMD Ryzen AI 5 340: https://frame.work/laptop13\n - SemiTO-V RP2350 GPIO Expansion Module: https://github.com/semitov/rp2350-gpio-card\n - SemiTO-V MCL Python to MicroPython tool: https://github.com/semitov/SemiTOV-MCL\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - This is not a Framework\n01:49 - Hardware\n04:02 - Strange architecture, seen before\n04:44 - RISC-V in a strange place right now\n05:28 - How is it as a laptop?\n07:18 - NPU and a missing 16 GB of RAM\n08:12 - Benchmarks\n09:20 - Why so inefficient?\n10:19 - A trip back to 2009\n11:49 - It's a Framework though\n12:23 - Upgrading to AMD\n13:04 - 6 cores demolishes 8 cores\n13:57 - Adding 2 more RISC-V cores (via expansion module)\n14:57 - Final thoughts", "duration" => 927, "filename" => "/downloads/JeffGeerling/2025-12-08 This is not a Framework Laptop/This is not a Framework Laptop [OkFfTK8S00c].mkv", "id" => "OkFfTK8S00c", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=OkFfTK8S00c", "playlist_index" => 5, "timestamp" => 1765206052, "title" => "This is not a Framework Laptop", "upload_date" => "20251208"} 08:52:08.647 [debug] QUERY OK source="sources" db=0.2ms idle=1977.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:52:08.647 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1978.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:52:08.648 [debug] QUERY OK source="media_items" db=0.6ms idle=1978.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-08 15:00:52Z], 7] 08:52:08.650 [debug] QUERY OK source="media_items" db=1.0ms idle=1030.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["It's a Framework 13, but there's no ordinary CPU inside...\n\nResources I mentioned in this video:\n\n - DeepComputing DC-ROMA II: https://store.deepcomputing.io/products/dc-roma-ai-pc-risc-v-mainboard-ii-for-framework-laptop-13\n - All my benchmarking data: https://github.com/geerlingguy/sbc-reviews/issues/82\n - Framework 13 with AMD Ryzen AI 5 340: https://frame.work/laptop13\n - SemiTO-V RP2350 GPIO Expansion Module: https://github.com/semitov/rp2350-gpio-card\n - SemiTO-V MCL Python to MicroPython tool: https://github.com/semitov/SemiTOV-MCL\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - This is not a Framework\n01:49 - Hardware\n04:02 - Strange architecture, seen before\n04:44 - RISC-V in a strange place right now\n05:28 - How is it as a laptop?\n07:18 - NPU and a missing 16 GB of RAM\n08:12 - Benchmarks\n09:20 - Why so inefficient?\n10:19 - A trip back to 2009\n11:49 - It's a Framework though\n12:23 - Upgrading to AMD\n13:04 - 6 cores demolishes 8 cores\n13:57 - Adding 2 more RISC-V cores (via expansion module)\n14:57 - Final thoughts", "This is not a Framework Laptop", "fcebfe3d-377e-4f8c-8250-821e856f1b97", "https://www.youtube.com/watch?v=OkFfTK8S00c", "OkFfTK8S00c", false, 927, false, 5, "/downloads/JeffGeerling/2025-12-08 This is not a Framework Laptop/This is not a Framework Laptop [OkFfTK8S00c].mkv", false, false, 7, [], 98, ~U[2025-12-08 15:00:52Z], ~U[2025-12-23 08:52:08Z], ~U[2025-12-23 08:52:08Z], "It's a Framework 13, but there's no ordinary CPU inside...\n\nResources I mentioned in this video:\n\n - DeepComputing DC-ROMA II: https://store.deepcomputing.io/products/dc-roma-ai-pc-risc-v-mainboard-ii-for-framework-laptop-13\n - All my benchmarking data: https://github.com/geerlingguy/sbc-reviews/issues/82\n - Framework 13 with AMD Ryzen AI 5 340: https://frame.work/laptop13\n - SemiTO-V RP2350 GPIO Expansion Module: https://github.com/semitov/rp2350-gpio-card\n - SemiTO-V MCL Python to MicroPython tool: https://github.com/semitov/SemiTOV-MCL\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - This is not a Framework\n01:49 - Hardware\n04:02 - Strange architecture, seen before\n04:44 - RISC-V in a strange place right now\n05:28 - How is it as a laptop?\n07:18 - NPU and a missing 16 GB of RAM\n08:12 - Benchmarks\n09:20 - Why so inefficient?\n10:19 - A trip back to 2009\n11:49 - It's a Framework though\n12:23 - Upgrading to AMD\n13:04 - 6 cores demolishes 8 cores\n13:57 - Adding 2 more RISC-V cores (via expansion module)\n14:57 - Final thoughts", "This is not a Framework Laptop", "https://www.youtube.com/watch?v=OkFfTK8S00c", "OkFfTK8S00c", 927, false, "/downloads/JeffGeerling/2025-12-08 This is not a Framework Laptop/This is not a Framework Laptop [OkFfTK8S00c].mkv", false, 7, ~U[2025-12-08 15:00:52Z]] 08:52:08.650 [debug] QUERY OK source="sources" db=0.2ms idle=30.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 08:52:08.651 [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] 08:52:08.651 [debug] QUERY OK source="media_items" db=0.2ms 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 [25154] 08:52:08.651 [debug] Current batch of media processed. Will check again in 1000ms 08:52:09.652 [debug] Current batch of media processed. Will check again in 1000ms 08:52:10.653 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Some of the articles and posts I referenced:\n\n - TeamGroup 64GB DDR5 Memory Kit I bought for $209.99 is now $649.99: https://www.microcenter.com/product/680461/teamgroup-t-create-expert-64gb-(2-x-32gb)-ddr5-6400-pc5-51200-cl34-dual-channel-desktop-memory-kit-ctced564g6400hc34bdc01-black\n - PC Part Picker Memory Pricing Trends: https://pcpartpicker.com/trends/price/memory/\n - Samsung can't buy Samsung memory: https://www.pcworld.com/article/2998935/ram-is-so-expensive-samsung-wont-even-sell-it-to-samsung.html\n - Micron stops selling Crucial memory and NVMes: https://investors.micron.com/news-releases/news-release-details/micron-announces-exit-crucial-consumer-business\n - Libre Computer's quote for LPDDR4 4GB RAM increasing beyond entire board BoM: https://x.com/librecomputer/status/1995592912063922578\n - Lenovo Stockpiles RAM for Laptops: https://www.pcworld.com/article/2986266/lenovo-stockpiles-ram-to-hopefully-keep-laptop-prices-down.html\n - Raspberry Pi memory-driven price rises: https://www.raspberrypi.com/news/1gb-raspberry-pi-5-now-available-at-45-and-memory-driven-price-rises/\n - Mono's future production runs impacted by LPDDR4 memory pricing: https://www.youtube.com/watch?v=AyueVGLT7qI\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff", "duration" => 270, "filename" => "/downloads/JeffGeerling/2025-12-04 The RAM Shortage Comes for Us All/The RAM Shortage Comes for Us All [9rbz0akyLyQ].mkv", "id" => "9rbz0akyLyQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=9rbz0akyLyQ", "playlist_index" => 6, "timestamp" => 1764873778, "title" => "The RAM Shortage Comes for Us All", "upload_date" => "20251204"} 08:52:10.654 [debug] QUERY OK source="sources" db=0.3ms idle=985.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] 08:52:10.655 [debug] QUERY OK source="sources" db=0.1ms idle=985.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:52:10.656 [debug] QUERY OK source="media_items" db=0.4ms idle=986.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-04 18:42:58Z], 7] 08:52:10.657 [debug] QUERY OK source="media_items" db=1.0ms idle=986.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Some of the articles and posts I referenced:\n\n - TeamGroup 64GB DDR5 Memory Kit I bought for $209.99 is now $649.99: https://www.microcenter.com/product/680461/teamgroup-t-create-expert-64gb-(2-x-32gb)-ddr5-6400-pc5-51200-cl34-dual-channel-desktop-memory-kit-ctced564g6400hc34bdc01-black\n - PC Part Picker Memory Pricing Trends: https://pcpartpicker.com/trends/price/memory/\n - Samsung can't buy Samsung memory: https://www.pcworld.com/article/2998935/ram-is-so-expensive-samsung-wont-even-sell-it-to-samsung.html\n - Micron stops selling Crucial memory and NVMes: https://investors.micron.com/news-releases/news-release-details/micron-announces-exit-crucial-consumer-business\n - Libre Computer's quote for LPDDR4 4GB RAM increasing beyond entire board BoM: https://x.com/librecomputer/status/1995592912063922578\n - Lenovo Stockpiles RAM for Laptops: https://www.pcworld.com/article/2986266/lenovo-stockpiles-ram-to-hopefully-keep-laptop-prices-down.html\n - Raspberry Pi memory-driven price rises: https://www.raspberrypi.com/news/1gb-raspberry-pi-5-now-available-at-45-and-memory-driven-price-rises/\n - Mono's future production runs impacted by LPDDR4 memory pricing: https://www.youtube.com/watch?v=AyueVGLT7qI\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff", "The RAM Shortage Comes for Us All", "4a03227f-596c-4d30-a6fa-8d8e87cb6d64", "https://www.youtube.com/watch?v=9rbz0akyLyQ", "9rbz0akyLyQ", false, 270, false, 6, "/downloads/JeffGeerling/2025-12-04 The RAM Shortage Comes for Us All/The RAM Shortage Comes for Us All [9rbz0akyLyQ].mkv", false, false, 7, [], 98, ~U[2025-12-04 18:42:58Z], ~U[2025-12-23 08:52:10Z], ~U[2025-12-23 08:52:10Z], "Some of the articles and posts I referenced:\n\n - TeamGroup 64GB DDR5 Memory Kit I bought for $209.99 is now $649.99: https://www.microcenter.com/product/680461/teamgroup-t-create-expert-64gb-(2-x-32gb)-ddr5-6400-pc5-51200-cl34-dual-channel-desktop-memory-kit-ctced564g6400hc34bdc01-black\n - PC Part Picker Memory Pricing Trends: https://pcpartpicker.com/trends/price/memory/\n - Samsung can't buy Samsung memory: https://www.pcworld.com/article/2998935/ram-is-so-expensive-samsung-wont-even-sell-it-to-samsung.html\n - Micron stops selling Crucial memory and NVMes: https://investors.micron.com/news-releases/news-release-details/micron-announces-exit-crucial-consumer-business\n - Libre Computer's quote for LPDDR4 4GB RAM increasing beyond entire board BoM: https://x.com/librecomputer/status/1995592912063922578\n - Lenovo Stockpiles RAM for Laptops: https://www.pcworld.com/article/2986266/lenovo-stockpiles-ram-to-hopefully-keep-laptop-prices-down.html\n - Raspberry Pi memory-driven price rises: https://www.raspberrypi.com/news/1gb-raspberry-pi-5-now-available-at-45-and-memory-driven-price-rises/\n - Mono's future production runs impacted by LPDDR4 memory pricing: https://www.youtube.com/watch?v=AyueVGLT7qI\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff", "The RAM Shortage Comes for Us All", "https://www.youtube.com/watch?v=9rbz0akyLyQ", "9rbz0akyLyQ", 270, false, "/downloads/JeffGeerling/2025-12-04 The RAM Shortage Comes for Us All/The RAM Shortage Comes for Us All [9rbz0akyLyQ].mkv", false, 7, ~U[2025-12-04 18:42:58Z]] 08:52:10.658 [debug] QUERY OK source="sources" db=0.1ms idle=32.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] 08:52:10.658 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:52:10.659 [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 [23293] 08:52:10.659 [debug] Current batch of media processed. Will check again in 1000ms 08:52:11.660 [debug] Current batch of media processed. Will check again in 1000ms 08:52:12.661 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "It finally works!\n\nBlog post with all the details (and how you can try it): https://www.jeffgeerling.com/blog/2025/nvidia-graphics-cards-work-on-pi-5-and-rockchip\n\nAnd here's the open driver PR I mentioned in the video: https://github.com/NVIDIA/open-gpu-kernel-modules/pull/972\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff", "duration" => 348, "filename" => "/downloads/JeffGeerling/2025-11-26 Nvidia GPU on Raspberry Pi—it WORKS!/Nvidia GPU on Raspberry Pi—it WORKS! [SPTYjF8qH0A].mkv", "id" => "SPTYjF8qH0A", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=SPTYjF8qH0A", "playlist_index" => 7, "timestamp" => 1764200717, "title" => "Nvidia GPU on Raspberry Pi—it WORKS!", "upload_date" => "20251126"} 08:52:12.662 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=992.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] 08:52:12.662 [debug] QUERY OK source="sources" db=0.2ms idle=993.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] 08:52:12.663 [debug] QUERY OK source="media_items" db=0.8ms idle=993.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-26 23:45:17Z], 7] 08:52:12.668 [debug] QUERY OK source="media_items" db=3.5ms idle=994.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["It finally works!\n\nBlog post with all the details (and how you can try it): https://www.jeffgeerling.com/blog/2025/nvidia-graphics-cards-work-on-pi-5-and-rockchip\n\nAnd here's the open driver PR I mentioned in the video: https://github.com/NVIDIA/open-gpu-kernel-modules/pull/972\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff", "Nvidia GPU on Raspberry Pi—it WORKS!", "aaf22d53-f025-486d-a7df-b6067118687a", "https://www.youtube.com/watch?v=SPTYjF8qH0A", "SPTYjF8qH0A", false, 348, false, 7, "/downloads/JeffGeerling/2025-11-26 Nvidia GPU on Raspberry Pi—it WORKS!/Nvidia GPU on Raspberry Pi—it WORKS! [SPTYjF8qH0A].mkv", false, false, 7, [], 98, ~U[2025-11-26 23:45:17Z], ~U[2025-12-23 08:52:12Z], ~U[2025-12-23 08:52:12Z], "It finally works!\n\nBlog post with all the details (and how you can try it): https://www.jeffgeerling.com/blog/2025/nvidia-graphics-cards-work-on-pi-5-and-rockchip\n\nAnd here's the open driver PR I mentioned in the video: https://github.com/NVIDIA/open-gpu-kernel-modules/pull/972\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff", "Nvidia GPU on Raspberry Pi—it WORKS!", "https://www.youtube.com/watch?v=SPTYjF8qH0A", "SPTYjF8qH0A", 348, false, "/downloads/JeffGeerling/2025-11-26 Nvidia GPU on Raspberry Pi—it WORKS!/Nvidia GPU on Raspberry Pi—it WORKS! [SPTYjF8qH0A].mkv", false, 7, ~U[2025-11-26 23:45:17Z]] 08:52:12.668 [debug] QUERY OK source="sources" db=0.2ms idle=38.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 08:52:12.669 [debug] QUERY OK source="media_profiles" db=0.2ms idle=6.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:52:12.669 [debug] QUERY OK source="media_items" db=0.3ms idle=6.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 [21785] 08:52:12.669 [debug] Current batch of media processed. Will check again in 1000ms 08:52:13.670 [debug] Current batch of media processed. Will check again in 1000ms 08:52:14.671 [debug] Current batch of media processed. Will check again in 1000ms 08:52:15.434 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZRB7pjRVVkI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/JeffGeerling/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/JeffGeerling/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/bd/c7/bdc723133d6effe6a6f7aa6bc38d979a7cbe7f8b31734fb74bfaf6240c8dd111.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: [youtube] ZRB7pjRVVkI: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] ZRB7pjRVVkI: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies 08:52:15.467 [debug] Running yt-dlp command for action: download_thumbnail 08:52:15.468 [debug] QUERY OK source="settings" db=0.2ms idle=1798.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:52:15.468 [debug] QUERY OK source="settings" db=0.1ms idle=1799.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:52:15.469 [debug] QUERY OK source="settings" db=0.1ms idle=1799.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:52:15.469 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZRB7pjRVVkI --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/29046/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/07/e1/07e1cfae529659aab5db7fd2dc263703cd79df4c973fb759badf4639bbfe33de.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 08:52:15.672 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "It's a neat, portable Air Quality monitor, full of personality.\n\nBut is it worth $250?\n\nLinks to things I referenced in the video (some links are affiliate links):\n\n - Air Lab: https://networkedartifacts.com/airlab/\n - AirGradient One: https://www.airgradient.com/indoor/\n - Temtop M2000C 2nd Generation: https://amzn.to/3XGbpbs\n - CO2 study referenced in the video: https://pubmed.ncbi.nlm.nih.gov/23008272/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - A $250 portable air quality monitor\n01:14 - Versus AirGradient ONE\n02:06 - Setting up an AirGradient with Home Assistant\n05:36 - Setting up the Air Lab\n07:24 - Air Lab Console walkthrough\n11:28 - Stale air on a road trip\n13:02 - Air quality at an indoor convention\n13:40 - Battery life, Home Assistant integration\n14:05 - DIY or Buy\n15:18 - Bonus, the Temtop", "duration" => 978, "filename" => "/downloads/JeffGeerling/2025-11-21 Are you sure that's air you're breathing?/Are you sure that's air you're breathing? [r21lvaw40nY].mkv", "id" => "r21lvaw40nY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=r21lvaw40nY", "playlist_index" => 8, "timestamp" => 1763737307, "title" => "Are you sure that's air you're breathing?", "upload_date" => "20251121"} 08:52:15.673 [debug] QUERY OK source="sources" db=0.2ms idle=1003.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:52:15.673 [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" = ?) [7] 08:52:15.674 [debug] QUERY OK source="media_items" db=0.7ms idle=204.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-21 15:01:47Z], 7] 08:52:15.676 [debug] QUERY OK source="media_items" db=1.0ms idle=205.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["It's a neat, portable Air Quality monitor, full of personality.\n\nBut is it worth $250?\n\nLinks to things I referenced in the video (some links are affiliate links):\n\n - Air Lab: https://networkedartifacts.com/airlab/\n - AirGradient One: https://www.airgradient.com/indoor/\n - Temtop M2000C 2nd Generation: https://amzn.to/3XGbpbs\n - CO2 study referenced in the video: https://pubmed.ncbi.nlm.nih.gov/23008272/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - A $250 portable air quality monitor\n01:14 - Versus AirGradient ONE\n02:06 - Setting up an AirGradient with Home Assistant\n05:36 - Setting up the Air Lab\n07:24 - Air Lab Console walkthrough\n11:28 - Stale air on a road trip\n13:02 - Air quality at an indoor convention\n13:40 - Battery life, Home Assistant integration\n14:05 - DIY or Buy\n15:18 - Bonus, the Temtop", "Are you sure that's air you're breathing?", "57e8f733-6966-470c-8ccb-c5aa414126be", "https://www.youtube.com/watch?v=r21lvaw40nY", "r21lvaw40nY", false, 978, false, 8, "/downloads/JeffGeerling/2025-11-21 Are you sure that's air you're breathing?/Are you sure that's air you're breathing? [r21lvaw40nY].mkv", false, false, 7, [], 98, ~U[2025-11-21 15:01:47Z], ~U[2025-12-23 08:52:15Z], ~U[2025-12-23 08:52:15Z], "It's a neat, portable Air Quality monitor, full of personality.\n\nBut is it worth $250?\n\nLinks to things I referenced in the video (some links are affiliate links):\n\n - Air Lab: https://networkedartifacts.com/airlab/\n - AirGradient One: https://www.airgradient.com/indoor/\n - Temtop M2000C 2nd Generation: https://amzn.to/3XGbpbs\n - CO2 study referenced in the video: https://pubmed.ncbi.nlm.nih.gov/23008272/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - A $250 portable air quality monitor\n01:14 - Versus AirGradient ONE\n02:06 - Setting up an AirGradient with Home Assistant\n05:36 - Setting up the Air Lab\n07:24 - Air Lab Console walkthrough\n11:28 - Stale air on a road trip\n13:02 - Air quality at an indoor convention\n13:40 - Battery life, Home Assistant integration\n14:05 - DIY or Buy\n15:18 - Bonus, the Temtop", "Are you sure that's air you're breathing?", "https://www.youtube.com/watch?v=r21lvaw40nY", "r21lvaw40nY", 978, false, "/downloads/JeffGeerling/2025-11-21 Are you sure that's air you're breathing?/Are you sure that's air you're breathing? [r21lvaw40nY].mkv", false, 7, ~U[2025-11-21 15:01:47Z]] 08:52:15.676 [debug] QUERY OK source="sources" db=0.2ms idle=39.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] 08:52:15.677 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:52:15.677 [debug] QUERY OK source="media_items" db=0.3ms 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 [20841] 08:52:15.677 [debug] Current batch of media processed. Will check again in 1000ms 08:52:15.811 [info] {"source":"oban","duration":1259,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:52:16.678 [debug] Current batch of media processed. Will check again in 1000ms 08:52:17.679 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "And you don't even have to recompile the Linux kernel!\n\nI purchased almost everything shown in this video, however, the Intel Arc Pro B50 was provided for testing by Intel, thus I'm marking this video as 'sponsored'. They did not pay me outside of providing the B50, nor did they have any say in the video's contents.\n\nThings mentioned in this video (some links are affiliate links):\n\n - Blog post with the latest guide for setup: https://www.jeffgeerling.com/blog/2025/all-intel-gpus-run-on-raspberry-pi-and-risc-v\n - Blog post on Resizeable BAR support: https://www.jeffgeerling.com/blog/2025/resizeable-bar-support-on-raspberry-pi\n - Minisforum DEG1 eGPU Dock: https://amzn.to/481EHao\n - JMT eGPU Dock: https://amzn.to/4oUZ4M9\n - chenyang OCuLink cable: https://amzn.to/47ZxWWF\n - Micro SATA Cables OCuLink to M.2 adapter with ReDriver: https://amzn.to/4nTtJse\n - Lian-Li 750W SFX PSU: https://amzn.to/3JG3Myv\n - Linux Kernel Mailing List patch for Intel on non-x86: https://lore.kernel.org/lkml/20250715061837.2144388-1-zhangzhijie@bosc.ac.cn/\n - Raspberry Pi OS Kernel PR for AMD and Intel GPUs: https://github.com/raspberrypi/linux/pull/7113\n - Full testing and results using the latest patches: https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/764\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Every Intel GPU\n00:51 - Physical connections and overcoming PCIe issues\n01:38 - You don't need to recompile Linux anymore\n03:09 - Black Mesa (the curse of the blinking cursor)\n03:55 - Resizeable BAR support\n04:27 - Performance: Vulkan, OpenGL, llama.cpp AI models\n05:26 - Compared to AMD\n05:56 - Partnering with RISC-V to go mainline", "duration" => 410, "filename" => "/downloads/JeffGeerling/2025-11-13 Every Intel GPU runs on a Raspberry Pi/Every Intel GPU runs on a Raspberry Pi [ewDJpxQEGo4].mkv", "id" => "ewDJpxQEGo4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=ewDJpxQEGo4", "playlist_index" => 9, "timestamp" => 1763046083, "title" => "Every Intel GPU runs on a Raspberry Pi", "upload_date" => "20251113"} 08:52:17.680 [debug] QUERY OK source="sources" db=0.2ms idle=39.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] 08:52:17.681 [debug] QUERY OK source="sources" db=0.2ms 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] 08:52:17.682 [debug] QUERY OK source="media_items" db=0.7ms idle=11.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-13 15:01:23Z], 7] 08:52:17.684 [debug] QUERY OK source="media_items" db=2.0ms idle=12.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["And you don't even have to recompile the Linux kernel!\n\nI purchased almost everything shown in this video, however, the Intel Arc Pro B50 was provided for testing by Intel, thus I'm marking this video as 'sponsored'. They did not pay me outside of providing the B50, nor did they have any say in the video's contents.\n\nThings mentioned in this video (some links are affiliate links):\n\n - Blog post with the latest guide for setup: https://www.jeffgeerling.com/blog/2025/all-intel-gpus-run-on-raspberry-pi-and-risc-v\n - Blog post on Resizeable BAR support: https://www.jeffgeerling.com/blog/2025/resizeable-bar-support-on-raspberry-pi\n - Minisforum DEG1 eGPU Dock: https://amzn.to/481EHao\n - JMT eGPU Dock: https://amzn.to/4oUZ4M9\n - chenyang OCuLink cable: https://amzn.to/47ZxWWF\n - Micro SATA Cables OCuLink to M.2 adapter with ReDriver: https://amzn.to/4nTtJse\n - Lian-Li 750W SFX PSU: https://amzn.to/3JG3Myv\n - Linux Kernel Mailing List patch for Intel on non-x86: https://lore.kernel.org/lkml/20250715061837.2144388-1-zhangzhijie@bosc.ac.cn/\n - Raspberry Pi OS Kernel PR for AMD and Intel GPUs: https://github.com/raspberrypi/linux/pull/7113\n - Full testing and results using the latest patches: https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/764\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Every Intel GPU\n00:51 - Physical connections and overcoming PCIe issues\n01:38 - You don't need to recompile Linux anymore\n03:09 - Black Mesa (the curse of the blinking cursor)\n03:55 - Resizeable BAR support\n04:27 - Performance: Vulkan, OpenGL, llama.cpp AI models\n05:26 - Compared to AMD\n05:56 - Partnering with RISC-V to go mainline", "Every Intel GPU runs on a Raspberry Pi", "746f6d55-104c-4513-955c-375890c70ceb", "https://www.youtube.com/watch?v=ewDJpxQEGo4", "ewDJpxQEGo4", false, 410, false, 9, "/downloads/JeffGeerling/2025-11-13 Every Intel GPU runs on a Raspberry Pi/Every Intel GPU runs on a Raspberry Pi [ewDJpxQEGo4].mkv", false, false, 7, [], 98, ~U[2025-11-13 15:01:23Z], ~U[2025-12-23 08:52:17Z], ~U[2025-12-23 08:52:17Z], "And you don't even have to recompile the Linux kernel!\n\nI purchased almost everything shown in this video, however, the Intel Arc Pro B50 was provided for testing by Intel, thus I'm marking this video as 'sponsored'. They did not pay me outside of providing the B50, nor did they have any say in the video's contents.\n\nThings mentioned in this video (some links are affiliate links):\n\n - Blog post with the latest guide for setup: https://www.jeffgeerling.com/blog/2025/all-intel-gpus-run-on-raspberry-pi-and-risc-v\n - Blog post on Resizeable BAR support: https://www.jeffgeerling.com/blog/2025/resizeable-bar-support-on-raspberry-pi\n - Minisforum DEG1 eGPU Dock: https://amzn.to/481EHao\n - JMT eGPU Dock: https://amzn.to/4oUZ4M9\n - chenyang OCuLink cable: https://amzn.to/47ZxWWF\n - Micro SATA Cables OCuLink to M.2 adapter with ReDriver: https://amzn.to/4nTtJse\n - Lian-Li 750W SFX PSU: https://amzn.to/3JG3Myv\n - Linux Kernel Mailing List patch for Intel on non-x86: https://lore.kernel.org/lkml/20250715061837.2144388-1-zhangzhijie@bosc.ac.cn/\n - Raspberry Pi OS Kernel PR for AMD and Intel GPUs: https://github.com/raspberrypi/linux/pull/7113\n - Full testing and results using the latest patches: https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/764\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Every Intel GPU\n00:51 - Physical connections and overcoming PCIe issues\n01:38 - You don't need to recompile Linux anymore\n03:09 - Black Mesa (the curse of the blinking cursor)\n03:55 - Resizeable BAR support\n04:27 - Performance: Vulkan, OpenGL, llama.cpp AI models\n05:26 - Compared to AMD\n05:56 - Partnering with RISC-V to go mainline", "Every Intel GPU runs on a Raspberry Pi", "https://www.youtube.com/watch?v=ewDJpxQEGo4", "ewDJpxQEGo4", 410, false, "/downloads/JeffGeerling/2025-11-13 Every Intel GPU runs on a Raspberry Pi/Every Intel GPU runs on a Raspberry Pi [ewDJpxQEGo4].mkv", false, 7, ~U[2025-11-13 15:01:23Z]] 08:52:17.685 [debug] QUERY OK source="sources" db=0.4ms idle=15.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 08:52:17.685 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:52:17.686 [debug] QUERY OK source="media_items" db=0.2ms 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 [19339] 08:52:17.686 [debug] Current batch of media processed. Will check again in 1000ms 08:52:18.687 [debug] Current batch of media processed. Will check again in 1000ms 08:52:18.917 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZRB7pjRVVkI --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/29046/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/07/e1/07e1cfae529659aab5db7fd2dc263703cd79df4c973fb759badf4639bbfe33de.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: [youtube] ZRB7pjRVVkI: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] ZRB7pjRVVkI: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 08:52:18.918 [debug] QUERY OK db=0.1ms idle=1233.9ms begin [] 08:52:18.919 [debug] QUERY OK source="media_items" db=0.6ms UPDATE "media_items" SET "metadata_filepath" = ?, "thumbnail_filepath" = ?, "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? ["/downloads/JeffGeerling/2025-12-22 NIST's NTP clock was microseconds from disaster/NIST's NTP clock was microseconds from disaster [ZRB7pjRVVkI].info.json", "/downloads/JeffGeerling/2025-12-22 NIST's NTP clock was microseconds from disaster/NIST's NTP clock was microseconds from disaster [ZRB7pjRVVkI]-thumb.jpg", ~U[2025-12-23 08:52:15Z], "/downloads/JeffGeerling/2025-12-22 NIST's NTP clock was microseconds from disaster/NIST's NTP clock was microseconds from disaster [ZRB7pjRVVkI].mp4", [["en", "/downloads/JeffGeerling/2025-12-22 NIST's NTP clock was microseconds from disaster/NIST's NTP clock was microseconds from disaster [ZRB7pjRVVkI].en.srt"]], ~U[2025-12-23 08:52:18Z], 29046] 08:52:18.919 [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/29046/metadata.json.gz", "/config/metadata/media_items/29046/thumbnail.jpg", 29046, ~U[2025-12-23 08:52:18Z], ~U[2025-12-23 08:52:18Z]] 08:52:18.920 [debug] QUERY OK db=0.1ms commit [] 08:52:18.921 [debug] QUERY OK source="media_items" db=1.1ms idle=1235.2ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [209602057, ~U[2025-12-23 08:52:18Z], 29046] 08:52:18.921 [info] User scripts lifecyle file either not present or is empty. Skipping. 08:52:18.922 [info] {"args":{"id":29046},"id":7405,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":20295672,"event":"job:stop","queue_time":625386,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 08:52:19.688 [debug] Current batch of media processed. Will check again in 1000ms 08:52:20.690 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Minisforum just launched the MS-R1, their first Arm workstation PC.\n\nWill it bring Arm into the homelab, in a big way? Or will it suffer the same fate as the Radxa Orion O6, let down by a power-hungry SoC? And will a dedicated GPU fit inside this tiny box?\n\nThings mentioned in this video (amzn.to links are affiliate links):\n\n - Minisforum MS-R1: https://s.minisforum.com/4hRFZbj\n - MS-R1 benchmarks and test data: https://github.com/geerlingguy/sbc-reviews/issues/89\n - Radxa Orion O6 review: https://www.youtube.com/watch?v=OMnCqmM-WKo\n - Abovetop Nvidia RTX A2000 SFF GPU: https://www.newegg.com/abovetop-Model-A2000laptop/p/1DW-00MF-00001\n - Intel Arc A310 ECO GPU: https://amzn.to/49Q3vn4\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Hardware overview\n01:47 - Cix's 12-core Arm SoC\n02:57 - Deeper problems\n03:55 - 10 Gbps Networking and AI inference\n04:55 - Installing a dGPU (RTX A2000)\n06:15 - A BIOS detour and AC Power Loss bug\n06:50 - Trying an Intel GPU (A310 ECO)\n07:20 - Installing Ubuntu and getting GPU acceleration\n08:40 - Arm Homelab in a box?", "duration" => 601, "filename" => "/downloads/JeffGeerling/2025-11-10 Arm Homelab-in-a-Box – Minisforum MS-R1/Arm Homelab-in-a-Box – Minisforum MS-R1 [WXfd0rOOtkg].mkv", "id" => "WXfd0rOOtkg", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=WXfd0rOOtkg", "playlist_index" => 10, "timestamp" => 1762790453, "title" => "Arm Homelab-in-a-Box – Minisforum MS-R1", "upload_date" => "20251110"} 08:52:20.691 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=43.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] 08:52:20.691 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=21.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:52:20.692 [debug] QUERY OK source="media_items" db=0.6ms idle=22.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-10 16:00:53Z], 7] 08:52:20.694 [debug] QUERY OK source="media_items" db=0.9ms idle=23.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Minisforum just launched the MS-R1, their first Arm workstation PC.\n\nWill it bring Arm into the homelab, in a big way? Or will it suffer the same fate as the Radxa Orion O6, let down by a power-hungry SoC? And will a dedicated GPU fit inside this tiny box?\n\nThings mentioned in this video (amzn.to links are affiliate links):\n\n - Minisforum MS-R1: https://s.minisforum.com/4hRFZbj\n - MS-R1 benchmarks and test data: https://github.com/geerlingguy/sbc-reviews/issues/89\n - Radxa Orion O6 review: https://www.youtube.com/watch?v=OMnCqmM-WKo\n - Abovetop Nvidia RTX A2000 SFF GPU: https://www.newegg.com/abovetop-Model-A2000laptop/p/1DW-00MF-00001\n - Intel Arc A310 ECO GPU: https://amzn.to/49Q3vn4\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Hardware overview\n01:47 - Cix's 12-core Arm SoC\n02:57 - Deeper problems\n03:55 - 10 Gbps Networking and AI inference\n04:55 - Installing a dGPU (RTX A2000)\n06:15 - A BIOS detour and AC Power Loss bug\n06:50 - Trying an Intel GPU (A310 ECO)\n07:20 - Installing Ubuntu and getting GPU acceleration\n08:40 - Arm Homelab in a box?", "Arm Homelab-in-a-Box – Minisforum MS-R1", "b6209958-2846-404c-8031-6567466717dd", "https://www.youtube.com/watch?v=WXfd0rOOtkg", "WXfd0rOOtkg", false, 601, false, 10, "/downloads/JeffGeerling/2025-11-10 Arm Homelab-in-a-Box – Minisforum MS-R1/Arm Homelab-in-a-Box – Minisforum MS-R1 [WXfd0rOOtkg].mkv", false, false, 7, [], 98, ~U[2025-11-10 16:00:53Z], ~U[2025-12-23 08:52:20Z], ~U[2025-12-23 08:52:20Z], "Minisforum just launched the MS-R1, their first Arm workstation PC.\n\nWill it bring Arm into the homelab, in a big way? Or will it suffer the same fate as the Radxa Orion O6, let down by a power-hungry SoC? And will a dedicated GPU fit inside this tiny box?\n\nThings mentioned in this video (amzn.to links are affiliate links):\n\n - Minisforum MS-R1: https://s.minisforum.com/4hRFZbj\n - MS-R1 benchmarks and test data: https://github.com/geerlingguy/sbc-reviews/issues/89\n - Radxa Orion O6 review: https://www.youtube.com/watch?v=OMnCqmM-WKo\n - Abovetop Nvidia RTX A2000 SFF GPU: https://www.newegg.com/abovetop-Model-A2000laptop/p/1DW-00MF-00001\n - Intel Arc A310 ECO GPU: https://amzn.to/49Q3vn4\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Hardware overview\n01:47 - Cix's 12-core Arm SoC\n02:57 - Deeper problems\n03:55 - 10 Gbps Networking and AI inference\n04:55 - Installing a dGPU (RTX A2000)\n06:15 - A BIOS detour and AC Power Loss bug\n06:50 - Trying an Intel GPU (A310 ECO)\n07:20 - Installing Ubuntu and getting GPU acceleration\n08:40 - Arm Homelab in a box?", "Arm Homelab-in-a-Box – Minisforum MS-R1", "https://www.youtube.com/watch?v=WXfd0rOOtkg", "WXfd0rOOtkg", 601, false, "/downloads/JeffGeerling/2025-11-10 Arm Homelab-in-a-Box – Minisforum MS-R1/Arm Homelab-in-a-Box – Minisforum MS-R1 [WXfd0rOOtkg].mkv", false, 7, ~U[2025-11-10 16:00:53Z]] 08:52:20.694 [debug] QUERY OK source="sources" db=0.4ms idle=24.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 08:52:20.695 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:52:20.695 [debug] QUERY OK source="media_items" db=0.2ms queue=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 [18771] 08:52:20.695 [debug] Current batch of media processed. Will check again in 1000ms 08:52:21.696 [debug] Current batch of media processed. Will check again in 1000ms 08:52:22.697 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Qualcomm and Arduino just launched the Uno Q, and it's... weird.\n\nArduino sent me a review unit to test, after I had already placed an order for a production unit. Both came in the same week, but I still like to disclose if any review equipment is sent for testing!\n\nMentioned in this video:\n\n - SBC Reviews - Uno Q: https://github.com/geerlingguy/sbc-reviews/issues/83\n - Arduino Uno Q: https://www.arduino.cc/product-uno-q\n - Radxa X4: https://radxa.com/products/x/x4/\n - Raspberry Pi 5: https://www.raspberrypi.com/products/raspberry-pi-5/\n - Arduino Yun: https://docs.arduino.cc/retired/boards/arduino-yun/\n - Electromaker video on Uno Q projects: https://www.youtube.com/watch?v=Zf99bvQbwf8\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - What is the Q?\n01:08 - Qualcomm Dragonwing and the App Lab\n01:51 - USB-C all the things\n02:55 - SBC Performance and efficiency\n03:57 - Compared to a Pi 5 and Radxa X4\n04:30 - Edge AI?\n05:28 - Qualcomm and Arduino and Open Source", "duration" => 444, "filename" => "/downloads/JeffGeerling/2025-10-31 Arduino made a weird SBC/Arduino made a weird SBC [Vz3pD3_CDUE].mkv", "id" => "Vz3pD3_CDUE", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Vz3pD3_CDUE", "playlist_index" => 11, "timestamp" => 1761919254, "title" => "Arduino made a weird SBC", "upload_date" => "20251031"} 08:52:22.698 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms 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" IN (?)) [7] 08:52:22.698 [debug] QUERY OK source="sources" db=0.2ms idle=29.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] 08:52:22.699 [debug] QUERY OK source="media_items" db=0.7ms idle=29.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-31 14:00:54Z], 7] 08:52:22.701 [debug] QUERY OK source="media_items" db=1.0ms idle=30.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Qualcomm and Arduino just launched the Uno Q, and it's... weird.\n\nArduino sent me a review unit to test, after I had already placed an order for a production unit. Both came in the same week, but I still like to disclose if any review equipment is sent for testing!\n\nMentioned in this video:\n\n - SBC Reviews - Uno Q: https://github.com/geerlingguy/sbc-reviews/issues/83\n - Arduino Uno Q: https://www.arduino.cc/product-uno-q\n - Radxa X4: https://radxa.com/products/x/x4/\n - Raspberry Pi 5: https://www.raspberrypi.com/products/raspberry-pi-5/\n - Arduino Yun: https://docs.arduino.cc/retired/boards/arduino-yun/\n - Electromaker video on Uno Q projects: https://www.youtube.com/watch?v=Zf99bvQbwf8\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - What is the Q?\n01:08 - Qualcomm Dragonwing and the App Lab\n01:51 - USB-C all the things\n02:55 - SBC Performance and efficiency\n03:57 - Compared to a Pi 5 and Radxa X4\n04:30 - Edge AI?\n05:28 - Qualcomm and Arduino and Open Source", "Arduino made a weird SBC", "56047dc5-0471-490b-a51e-06f2f385b5d3", "https://www.youtube.com/watch?v=Vz3pD3_CDUE", "Vz3pD3_CDUE", false, 444, false, 11, "/downloads/JeffGeerling/2025-10-31 Arduino made a weird SBC/Arduino made a weird SBC [Vz3pD3_CDUE].mkv", false, false, 7, [], 98, ~U[2025-10-31 14:00:54Z], ~U[2025-12-23 08:52:22Z], ~U[2025-12-23 08:52:22Z], "Qualcomm and Arduino just launched the Uno Q, and it's... weird.\n\nArduino sent me a review unit to test, after I had already placed an order for a production unit. Both came in the same week, but I still like to disclose if any review equipment is sent for testing!\n\nMentioned in this video:\n\n - SBC Reviews - Uno Q: https://github.com/geerlingguy/sbc-reviews/issues/83\n - Arduino Uno Q: https://www.arduino.cc/product-uno-q\n - Radxa X4: https://radxa.com/products/x/x4/\n - Raspberry Pi 5: https://www.raspberrypi.com/products/raspberry-pi-5/\n - Arduino Yun: https://docs.arduino.cc/retired/boards/arduino-yun/\n - Electromaker video on Uno Q projects: https://www.youtube.com/watch?v=Zf99bvQbwf8\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - What is the Q?\n01:08 - Qualcomm Dragonwing and the App Lab\n01:51 - USB-C all the things\n02:55 - SBC Performance and efficiency\n03:57 - Compared to a Pi 5 and Radxa X4\n04:30 - Edge AI?\n05:28 - Qualcomm and Arduino and Open Source", "Arduino made a weird SBC", "https://www.youtube.com/watch?v=Vz3pD3_CDUE", "Vz3pD3_CDUE", 444, false, "/downloads/JeffGeerling/2025-10-31 Arduino made a weird SBC/Arduino made a weird SBC [Vz3pD3_CDUE].mkv", false, 7, ~U[2025-10-31 14:00:54Z]] 08:52:22.701 [debug] QUERY OK source="sources" db=0.1ms idle=32.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] 08:52:22.702 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=3.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:52:22.702 [debug] QUERY OK source="media_items" db=0.2ms 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 [16870] 08:52:22.703 [debug] Current batch of media processed. Will check again in 1000ms 08:52:23.704 [debug] Current batch of media processed. Will check again in 1000ms 08:52:24.706 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Vintage Computer Festival Midwest 2025 was overwhelming (in a good way).\n\nI'll tell you my favorite experiences and interactions with the vintage tech community in this video.\n\nSome of the projects and products mentioned in this video:\n\n - VCF Midwest: https://www.vcfmw.org\n - yyzkevin PCMCIA Pico card: https://www.yyzkevin.ca/pico-pcmcia/\n - Open Source CRT analog board: https://github.com/tdaede/td-crt\n - Meshtastic 64 on C64: https://64jim64.blogspot.com/2025/09/meshtastic-64-meshtastic-radio-for.html\n - Juicy Crumb Systems: https://juicycrumb.com\n - Mac84 Video on Personics View Control System: https://www.youtube.com/watch?v=41jCujsrHVg\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Old computers, new tricks in Chicago\n00:54 - Nostalgia for old Macs\n02:00 - The free pile, and Jeff is easily distracted\n02:47 - Open source CRT analog board replacement\n03:41 - An unexpected meeting at RCV's booth\n04:21 - Cursed input devices\n05:07 - Meshtastic on a C64\n05:54 - My timing sense tingled\n06:57 - Side quest - BlueSCSI disk rescue\n08:20 - Relay computers, 70 lb HDDs, and ESMs\n09:38 - Preventing e-waste, and analog DRM\n10:42 - The anti-AI", "duration" => 720, "filename" => "/downloads/JeffGeerling/2025-10-16 We used to actually own our computers/We used to actually own our computers [hF0NKvmQmVA].mkv", "id" => "hF0NKvmQmVA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=hF0NKvmQmVA", "playlist_index" => 12, "timestamp" => 1760623274, "title" => "We used to actually own our computers", "upload_date" => "20251016"} 08:52:24.707 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms 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" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 08:52:24.707 [debug] QUERY OK source="sources" db=0.3ms idle=37.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:52:24.708 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=38.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-16 14:01:14Z], 7] 08:52:24.710 [debug] QUERY OK source="media_items" db=1.2ms idle=39.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Vintage Computer Festival Midwest 2025 was overwhelming (in a good way).\n\nI'll tell you my favorite experiences and interactions with the vintage tech community in this video.\n\nSome of the projects and products mentioned in this video:\n\n - VCF Midwest: https://www.vcfmw.org\n - yyzkevin PCMCIA Pico card: https://www.yyzkevin.ca/pico-pcmcia/\n - Open Source CRT analog board: https://github.com/tdaede/td-crt\n - Meshtastic 64 on C64: https://64jim64.blogspot.com/2025/09/meshtastic-64-meshtastic-radio-for.html\n - Juicy Crumb Systems: https://juicycrumb.com\n - Mac84 Video on Personics View Control System: https://www.youtube.com/watch?v=41jCujsrHVg\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Old computers, new tricks in Chicago\n00:54 - Nostalgia for old Macs\n02:00 - The free pile, and Jeff is easily distracted\n02:47 - Open source CRT analog board replacement\n03:41 - An unexpected meeting at RCV's booth\n04:21 - Cursed input devices\n05:07 - Meshtastic on a C64\n05:54 - My timing sense tingled\n06:57 - Side quest - BlueSCSI disk rescue\n08:20 - Relay computers, 70 lb HDDs, and ESMs\n09:38 - Preventing e-waste, and analog DRM\n10:42 - The anti-AI", "We used to actually own our computers", "552604c1-0bf5-48c1-a81f-e3b8c91fcd3e", "https://www.youtube.com/watch?v=hF0NKvmQmVA", "hF0NKvmQmVA", false, 720, false, 12, "/downloads/JeffGeerling/2025-10-16 We used to actually own our computers/We used to actually own our computers [hF0NKvmQmVA].mkv", false, false, 7, [], 98, ~U[2025-10-16 14:01:14Z], ~U[2025-12-23 08:52:24Z], ~U[2025-12-23 08:52:24Z], "Vintage Computer Festival Midwest 2025 was overwhelming (in a good way).\n\nI'll tell you my favorite experiences and interactions with the vintage tech community in this video.\n\nSome of the projects and products mentioned in this video:\n\n - VCF Midwest: https://www.vcfmw.org\n - yyzkevin PCMCIA Pico card: https://www.yyzkevin.ca/pico-pcmcia/\n - Open Source CRT analog board: https://github.com/tdaede/td-crt\n - Meshtastic 64 on C64: https://64jim64.blogspot.com/2025/09/meshtastic-64-meshtastic-radio-for.html\n - Juicy Crumb Systems: https://juicycrumb.com\n - Mac84 Video on Personics View Control System: https://www.youtube.com/watch?v=41jCujsrHVg\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Old computers, new tricks in Chicago\n00:54 - Nostalgia for old Macs\n02:00 - The free pile, and Jeff is easily distracted\n02:47 - Open source CRT analog board replacement\n03:41 - An unexpected meeting at RCV's booth\n04:21 - Cursed input devices\n05:07 - Meshtastic on a C64\n05:54 - My timing sense tingled\n06:57 - Side quest - BlueSCSI disk rescue\n08:20 - Relay computers, 70 lb HDDs, and ESMs\n09:38 - Preventing e-waste, and analog DRM\n10:42 - The anti-AI", "We used to actually own our computers", "https://www.youtube.com/watch?v=hF0NKvmQmVA", "hF0NKvmQmVA", 720, false, "/downloads/JeffGeerling/2025-10-16 We used to actually own our computers/We used to actually own our computers [hF0NKvmQmVA].mkv", false, 7, ~U[2025-10-16 14:01:14Z]] 08:52:24.710 [debug] QUERY OK source="sources" db=0.2ms idle=41.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 08:52:24.711 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:52:24.712 [debug] QUERY OK source="media_items" db=0.3ms 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 [14006] 08:52:24.712 [debug] Current batch of media processed. Will check again in 1000ms 08:52:25.713 [debug] Current batch of media processed. Will check again in 1000ms 08:52:26.714 [debug] Current batch of media processed. Will check again in 1000ms 08:52:27.716 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Who saw THIS coming? Qualcomm just announced their intent to acquire Arduino. And they're making a new SBC, the Uno Q!\n\nLearn more in this video, and read their official press release for more info: https://www.qualcomm.com/news/releases/2025/10/qualcomm-to-acquire-arduino-accelerating-developers--access-to-i\n\nSome things I mentioned in this video:\n\n - Arduino Uno Q: https://www.arduino.cc/product-uno-q\n - Arduino Uno R3: https://amzn.to/3WpYx8J\n - Arduino Uno R4 WiFi: https://amzn.to/4nZr9RW\n - My first Arduino blinky repo: https://github.com/geerlingguy/blinky\n - Polanduino: https://github.com/mfolejewski/Polanduino\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Qualcomm acquires Arduino\n01:09 - Why does Qualcomm want Arduino?\n02:12 - A new joint SBC: Arduino Uno Q\n02:52 - Two big questions\n03:50 - Still open source?\n04:44 - The value of their first SBC", "duration" => 337, "filename" => "/downloads/JeffGeerling/2025-10-07 Qualcomm just bought Arduino, and they're making a tiny computer/Qualcomm just bought Arduino, and they're making a tiny computer [CfKX616-nsE].mkv", "id" => "CfKX616-nsE", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=CfKX616-nsE", "playlist_index" => 13, "timestamp" => 1759842032, "title" => "Qualcomm just bought Arduino, and they're making a tiny computer", "upload_date" => "20251007"} 08:52:27.717 [debug] QUERY OK source="sources" db=0.3ms idle=1047.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 08:52:27.718 [debug] QUERY OK source="sources" db=0.3ms idle=1048.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] 08:52:27.718 [debug] QUERY OK source="media_items" db=0.7ms idle=1048.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-07 13:00:32Z], 7] 08:52:27.720 [debug] QUERY OK source="media_items" db=1.0ms idle=1049.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Who saw THIS coming? Qualcomm just announced their intent to acquire Arduino. And they're making a new SBC, the Uno Q!\n\nLearn more in this video, and read their official press release for more info: https://www.qualcomm.com/news/releases/2025/10/qualcomm-to-acquire-arduino-accelerating-developers--access-to-i\n\nSome things I mentioned in this video:\n\n - Arduino Uno Q: https://www.arduino.cc/product-uno-q\n - Arduino Uno R3: https://amzn.to/3WpYx8J\n - Arduino Uno R4 WiFi: https://amzn.to/4nZr9RW\n - My first Arduino blinky repo: https://github.com/geerlingguy/blinky\n - Polanduino: https://github.com/mfolejewski/Polanduino\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Qualcomm acquires Arduino\n01:09 - Why does Qualcomm want Arduino?\n02:12 - A new joint SBC: Arduino Uno Q\n02:52 - Two big questions\n03:50 - Still open source?\n04:44 - The value of their first SBC", "Qualcomm just bought Arduino, and they're making a tiny computer", "0648b125-2d7e-41b7-85fb-d47d35c92d59", "https://www.youtube.com/watch?v=CfKX616-nsE", "CfKX616-nsE", false, 337, false, 13, "/downloads/JeffGeerling/2025-10-07 Qualcomm just bought Arduino, and they're making a tiny computer/Qualcomm just bought Arduino, and they're making a tiny computer [CfKX616-nsE].mkv", false, false, 7, [], 98, ~U[2025-10-07 13:00:32Z], ~U[2025-12-23 08:52:27Z], ~U[2025-12-23 08:52:27Z], "Who saw THIS coming? Qualcomm just announced their intent to acquire Arduino. And they're making a new SBC, the Uno Q!\n\nLearn more in this video, and read their official press release for more info: https://www.qualcomm.com/news/releases/2025/10/qualcomm-to-acquire-arduino-accelerating-developers--access-to-i\n\nSome things I mentioned in this video:\n\n - Arduino Uno Q: https://www.arduino.cc/product-uno-q\n - Arduino Uno R3: https://amzn.to/3WpYx8J\n - Arduino Uno R4 WiFi: https://amzn.to/4nZr9RW\n - My first Arduino blinky repo: https://github.com/geerlingguy/blinky\n - Polanduino: https://github.com/mfolejewski/Polanduino\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Qualcomm acquires Arduino\n01:09 - Why does Qualcomm want Arduino?\n02:12 - A new joint SBC: Arduino Uno Q\n02:52 - Two big questions\n03:50 - Still open source?\n04:44 - The value of their first SBC", "Qualcomm just bought Arduino, and they're making a tiny computer", "https://www.youtube.com/watch?v=CfKX616-nsE", "CfKX616-nsE", 337, false, "/downloads/JeffGeerling/2025-10-07 Qualcomm just bought Arduino, and they're making a tiny computer/Qualcomm just bought Arduino, and they're making a tiny computer [CfKX616-nsE].mkv", false, 7, ~U[2025-10-07 13:00:32Z]] 08:52:27.720 [debug] QUERY OK source="sources" db=0.2ms idle=58.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 08:52:27.721 [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] 08:52:27.721 [debug] QUERY OK source="media_items" db=0.2ms 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 [12333] 08:52:27.722 [debug] Current batch of media processed. Will check again in 1000ms 08:52:28.723 [debug] Current batch of media processed. Will check again in 1000ms 08:52:29.724 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "The Raspberry Pi 500+ adds on things missing from the regular 500. But at what cost?\n\nAnd with full RGB... is it any better at gaming? What if we throw in an eGPU?\n\nMentioned in this video:\n\n - Raspberry Pi 500+: https://www.raspberrypi.com/products/raspberry-pi-500-plus/\n - Raspberry Pi Monitor: https://www.raspberrypi.com/products/raspberry-pi-monitor/\n - Lumafield scans:\n - Pi 500+ 'top' (right side): https://voyager.lumafield.com/project/79ccb3a4-21a0-40eb-ba95-21057900883f\n - Pi 500+ 'bottom' (left side): https://voyager.lumafield.com/project/0506155d-2d8f-4a49-832b-104d215999c9\n - ZX Spectrum Video by Adrian's Digital Basement: https://www.youtube.com/watch?v=RMG_StQ67kA\n\nAnd here are all the parts I used in testing the Pi 500+ (some links are affiliate links):\n\n - RIITOP NVMe to USB Docking Station: https://amzn.to/46yvPaC\n - JMT M.2 M-Key to OCuLink PCIe Dock: https://amzn.to/4pCCokS\n - chenyang SFF-8611 OCuLink Cable: https://amzn.to/481Otdn\n - Lian Li 750W SFX Power Supply: https://amzn.to/3Ied0kV\n - AVerMedia GC513 Live Gamer external Capture Card: https://amzn.to/3Vyz78C\n - Mechanical keyboard key cap puller: https://amzn.to/3KiuJZ0\n - dagaladoo Low Profile PBT Keycaps: https://amzn.to/3KjOCyX\n - KBDiy 9009 Doys Low Profile PBT Keycaps: https://amzn.to/4mulpyJ\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Mechanical keyboard, NVMe, 16 GB RAM, $200\n01:57 - Performance\n02:52 - Looking inside with Lumafield CT scans\n04:36 - Cracking the case\n05:20 - Oculink and eGPU Docks\n11:02 - AMD RX 7900 XT on a Pi 500+\n12:27 - We're gaming! And private LLM'ing!\n13:53 - How's the keyboard?\n14:49 - Alternate keycaps and mechanical keyboarding\n18:31 - Keyboard configuration, RGB, and an easter egg\n19:55 - Is it worth $110 more?", "duration" => 1255, "filename" => "/downloads/JeffGeerling/2025-09-25 Raspberry Pi 500+: NOW we're gaming!/Raspberry Pi 500+: NOW we're gaming! [Dv3RRAx7G6E].mkv", "id" => "Dv3RRAx7G6E", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Dv3RRAx7G6E", "playlist_index" => 14, "timestamp" => 1758783624, "title" => "Raspberry Pi 500+: NOW we're gaming!", "upload_date" => "20250925"} 08:52:29.725 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=59.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] 08:52:29.726 [debug] QUERY OK source="sources" db=0.1ms idle=56.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] 08:52:29.727 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=56.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-25 07:00:24Z], 7] 08:52:29.729 [debug] QUERY OK source="media_items" db=1.2ms idle=58.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Raspberry Pi 500+ adds on things missing from the regular 500. But at what cost?\n\nAnd with full RGB... is it any better at gaming? What if we throw in an eGPU?\n\nMentioned in this video:\n\n - Raspberry Pi 500+: https://www.raspberrypi.com/products/raspberry-pi-500-plus/\n - Raspberry Pi Monitor: https://www.raspberrypi.com/products/raspberry-pi-monitor/\n - Lumafield scans:\n - Pi 500+ 'top' (right side): https://voyager.lumafield.com/project/79ccb3a4-21a0-40eb-ba95-21057900883f\n - Pi 500+ 'bottom' (left side): https://voyager.lumafield.com/project/0506155d-2d8f-4a49-832b-104d215999c9\n - ZX Spectrum Video by Adrian's Digital Basement: https://www.youtube.com/watch?v=RMG_StQ67kA\n\nAnd here are all the parts I used in testing the Pi 500+ (some links are affiliate links):\n\n - RIITOP NVMe to USB Docking Station: https://amzn.to/46yvPaC\n - JMT M.2 M-Key to OCuLink PCIe Dock: https://amzn.to/4pCCokS\n - chenyang SFF-8611 OCuLink Cable: https://amzn.to/481Otdn\n - Lian Li 750W SFX Power Supply: https://amzn.to/3Ied0kV\n - AVerMedia GC513 Live Gamer external Capture Card: https://amzn.to/3Vyz78C\n - Mechanical keyboard key cap puller: https://amzn.to/3KiuJZ0\n - dagaladoo Low Profile PBT Keycaps: https://amzn.to/3KjOCyX\n - KBDiy 9009 Doys Low Profile PBT Keycaps: https://amzn.to/4mulpyJ\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Mechanical keyboard, NVMe, 16 GB RAM, $200\n01:57 - Performance\n02:52 - Looking inside with Lumafield CT scans\n04:36 - Cracking the case\n05:20 - Oculink and eGPU Docks\n11:02 - AMD RX 7900 XT on a Pi 500+\n12:27 - We're gaming! And private LLM'ing!\n13:53 - How's the keyboard?\n14:49 - Alternate keycaps and mechanical keyboarding\n18:31 - Keyboard configuration, RGB, and an easter egg\n19:55 - Is it worth $110 more?", "Raspberry Pi 500+: NOW we're gaming!", "59db4b69-06e5-4c3d-b01e-78725c837fd2", "https://www.youtube.com/watch?v=Dv3RRAx7G6E", "Dv3RRAx7G6E", false, 1255, false, 14, "/downloads/JeffGeerling/2025-09-25 Raspberry Pi 500+: NOW we're gaming!/Raspberry Pi 500+: NOW we're gaming! [Dv3RRAx7G6E].mkv", false, false, 7, [], 98, ~U[2025-09-25 07:00:24Z], ~U[2025-12-23 08:52:29Z], ~U[2025-12-23 08:52:29Z], "The Raspberry Pi 500+ adds on things missing from the regular 500. But at what cost?\n\nAnd with full RGB... is it any better at gaming? What if we throw in an eGPU?\n\nMentioned in this video:\n\n - Raspberry Pi 500+: https://www.raspberrypi.com/products/raspberry-pi-500-plus/\n - Raspberry Pi Monitor: https://www.raspberrypi.com/products/raspberry-pi-monitor/\n - Lumafield scans:\n - Pi 500+ 'top' (right side): https://voyager.lumafield.com/project/79ccb3a4-21a0-40eb-ba95-21057900883f\n - Pi 500+ 'bottom' (left side): https://voyager.lumafield.com/project/0506155d-2d8f-4a49-832b-104d215999c9\n - ZX Spectrum Video by Adrian's Digital Basement: https://www.youtube.com/watch?v=RMG_StQ67kA\n\nAnd here are all the parts I used in testing the Pi 500+ (some links are affiliate links):\n\n - RIITOP NVMe to USB Docking Station: https://amzn.to/46yvPaC\n - JMT M.2 M-Key to OCuLink PCIe Dock: https://amzn.to/4pCCokS\n - chenyang SFF-8611 OCuLink Cable: https://amzn.to/481Otdn\n - Lian Li 750W SFX Power Supply: https://amzn.to/3Ied0kV\n - AVerMedia GC513 Live Gamer external Capture Card: https://amzn.to/3Vyz78C\n - Mechanical keyboard key cap puller: https://amzn.to/3KiuJZ0\n - dagaladoo Low Profile PBT Keycaps: https://amzn.to/3KjOCyX\n - KBDiy 9009 Doys Low Profile PBT Keycaps: https://amzn.to/4mulpyJ\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Mechanical keyboard, NVMe, 16 GB RAM, $200\n01:57 - Performance\n02:52 - Looking inside with Lumafield CT scans\n04:36 - Cracking the case\n05:20 - Oculink and eGPU Docks\n11:02 - AMD RX 7900 XT on a Pi 500+\n12:27 - We're gaming! And private LLM'ing!\n13:53 - How's the keyboard?\n14:49 - Alternate keycaps and mechanical keyboarding\n18:31 - Keyboard configuration, RGB, and an easter egg\n19:55 - Is it worth $110 more?", "Raspberry Pi 500+: NOW we're gaming!", "https://www.youtube.com/watch?v=Dv3RRAx7G6E", "Dv3RRAx7G6E", 1255, false, "/downloads/JeffGeerling/2025-09-25 Raspberry Pi 500+: NOW we're gaming!/Raspberry Pi 500+: NOW we're gaming! [Dv3RRAx7G6E].mkv", false, 7, ~U[2025-09-25 07:00:24Z]] 08:52:29.729 [debug] QUERY OK source="sources" db=0.2ms idle=59.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 08:52:29.729 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:52:29.730 [debug] QUERY OK source="media_items" db=0.2ms idle=4.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 [9989] 08:52:29.730 [debug] Current batch of media processed. Will check again in 1000ms 08:52:30.731 [debug] Current batch of media processed. Will check again in 1000ms 08:52:31.732 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "It's been a while. Some Kickstarters take time.\n\nWhat do you think about doing the same thing 10 times in a row, over and over? If that's your jam, build a cluster like I did in this video!\n\nIf you want to replicate the Compute Blade Cluster, here are all the parts I used (some links are affiliate links):\n\n - Compute Blade DEV: https://www.pishop.us/product/compute-blade-dev/\n - Compute Blade Standard Fan Unit: https://www.pishop.us/product/fansta-1v1-0/\n - Compute Blade 10\" 3D Print Rackmount: https://github.com/Uptime-Lab/compute-blade/tree/main/models/bladerunner\n - Raspberry Pi CM5 16GB (CM5016000): https://www.pishop.us/product/raspberry-pi-compute-module-5-16gb-ram-lite-cm5016000/\n - GLOTRENDS Aluminum CM5 Heatsink: https://amzn.to/45YACBV\n - Patriot P300 256GB NVMe SSD 10-pack: https://amzn.to/4lPJ0JC\n - GigaPlus 2.5 Gbps 10 port PoE+ switch: https://amzn.to/3UNOwSd\n - GigaPlus 10\" Rack Mount 3D Print ears: https://www.printables.com/model/1215585-unified-10-rack-gigaplus-switch-mounting-ears\n - Monoprice Cat6A SlimRun 6\" Cat6 patch cables (10 pack): https://amzn.to/4fX1gzr\n - ioplex SFP+ Twinax DAC patch cable: https://amzn.to/47UlPKX\n - DeskPi RackMate TT: https://amzn.to/3UUjCHP\n\nOther resources mentioned in the video:\n\n - My older Compute Blade video: https://www.youtube.com/watch?v=rKDGlpnP-vE\n - Xerxes Pi Kickstarter: https://www.kickstarter.com/projects/1907647187/small-board-big-possibilities-xerxes-pi\n - Xerxes Pi testing: https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/753\n - Unredacted Labs' Tor exit cluster: https://unredacted.org/blog/2025/05/unredacted-labs/\n - World's Largest Pi Cluster at UC Santa Barbara: https://www.independent.com/2025/04/29/worlds-biggest-raspberry-pi-cluster-is-now-at-uc-santa-barbara/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - 2 years 2 long\n00:32 - Another blade\n01:30 - Unboxing a cluster\n03:06 - Assembling one of 10\n06:11 - A bandolier of microSD cards\n07:16 - Assembling blades 2-10\n08:16 - Next steps - fans and storage\n10:17 - Flashing NVMe drives\n11:00 - Only Fan Units\n12:45 - They all just... disappeared\n14:33 - Spending another $200\n15:45 - Cluster benchmarks: HPL\n16:23 - Spending another $70\n17:03 - Framework cluster vs Pi cluster\n18:12 - AI clustering (down one node)\n19:26 - llama.cpp is totally RPC\n20:54 - Exo and Distributed Llama\n22:09 - Blade (the movie) vs blade (the compute)", "duration" => 1429, "filename" => "/downloads/JeffGeerling/2025-09-19 I regret building a $3000 Pi AI Cluster/I regret building a $3000 Pi AI Cluster [8SiB-bNyP5E].mkv", "id" => "8SiB-bNyP5E", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=8SiB-bNyP5E", "playlist_index" => 15, "timestamp" => 1758290414, "title" => "I regret building a $3000 Pi AI Cluster", "upload_date" => "20250919"} 08:52:31.733 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=63.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:52:31.734 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 08:52:31.735 [debug] QUERY OK source="media_items" db=0.7ms idle=64.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-19 14:00:14Z], 7] 08:52:31.737 [debug] QUERY OK source="media_items" db=1.6ms idle=66.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["It's been a while. Some Kickstarters take time.\n\nWhat do you think about doing the same thing 10 times in a row, over and over? If that's your jam, build a cluster like I did in this video!\n\nIf you want to replicate the Compute Blade Cluster, here are all the parts I used (some links are affiliate links):\n\n - Compute Blade DEV: https://www.pishop.us/product/compute-blade-dev/\n - Compute Blade Standard Fan Unit: https://www.pishop.us/product/fansta-1v1-0/\n - Compute Blade 10\" 3D Print Rackmount: https://github.com/Uptime-Lab/compute-blade/tree/main/models/bladerunner\n - Raspberry Pi CM5 16GB (CM5016000): https://www.pishop.us/product/raspberry-pi-compute-module-5-16gb-ram-lite-cm5016000/\n - GLOTRENDS Aluminum CM5 Heatsink: https://amzn.to/45YACBV\n - Patriot P300 256GB NVMe SSD 10-pack: https://amzn.to/4lPJ0JC\n - GigaPlus 2.5 Gbps 10 port PoE+ switch: https://amzn.to/3UNOwSd\n - GigaPlus 10\" Rack Mount 3D Print ears: https://www.printables.com/model/1215585-unified-10-rack-gigaplus-switch-mounting-ears\n - Monoprice Cat6A SlimRun 6\" Cat6 patch cables (10 pack): https://amzn.to/4fX1gzr\n - ioplex SFP+ Twinax DAC patch cable: https://amzn.to/47UlPKX\n - DeskPi RackMate TT: https://amzn.to/3UUjCHP\n\nOther resources mentioned in the video:\n\n - My older Compute Blade video: https://www.youtube.com/watch?v=rKDGlpnP-vE\n - Xerxes Pi Kickstarter: https://www.kickstarter.com/projects/1907647187/small-board-big-possibilities-xerxes-pi\n - Xerxes Pi testing: https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/753\n - Unredacted Labs' Tor exit cluster: https://unredacted.org/blog/2025/05/unredacted-labs/\n - World's Largest Pi Cluster at UC Santa Barbara: https://www.independent.com/2025/04/29/worlds-biggest-raspberry-pi-cluster-is-now-at-uc-santa-barbara/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - 2 years 2 long\n00:32 - Another blade\n01:30 - Unboxing a cluster\n03:06 - Assembling one of 10\n06:11 - A bandolier of microSD cards\n07:16 - Assembling blades 2-10\n08:16 - Next steps - fans and storage\n10:17 - Flashing NVMe drives\n11:00 - Only Fan Units\n12:45 - They all just... disappeared\n14:33 - Spending another $200\n15:45 - Cluster benchmarks: HPL\n16:23 - Spending another $70\n17:03 - Framework cluster vs Pi cluster\n18:12 - AI clustering (down one node)\n19:26 - llama.cpp is totally RPC\n20:54 - Exo and Distributed Llama\n22:09 - Blade (the movie) vs blade (the compute)", "I regret building a $3000 Pi AI Cluster", "3ea8b887-a465-4628-8980-b005f1988110", "https://www.youtube.com/watch?v=8SiB-bNyP5E", "8SiB-bNyP5E", false, 1429, false, 15, "/downloads/JeffGeerling/2025-09-19 I regret building a $3000 Pi AI Cluster/I regret building a $3000 Pi AI Cluster [8SiB-bNyP5E].mkv", false, false, 7, [], 98, ~U[2025-09-19 14:00:14Z], ~U[2025-12-23 08:52:31Z], ~U[2025-12-23 08:52:31Z], "It's been a while. Some Kickstarters take time.\n\nWhat do you think about doing the same thing 10 times in a row, over and over? If that's your jam, build a cluster like I did in this video!\n\nIf you want to replicate the Compute Blade Cluster, here are all the parts I used (some links are affiliate links):\n\n - Compute Blade DEV: https://www.pishop.us/product/compute-blade-dev/\n - Compute Blade Standard Fan Unit: https://www.pishop.us/product/fansta-1v1-0/\n - Compute Blade 10\" 3D Print Rackmount: https://github.com/Uptime-Lab/compute-blade/tree/main/models/bladerunner\n - Raspberry Pi CM5 16GB (CM5016000): https://www.pishop.us/product/raspberry-pi-compute-module-5-16gb-ram-lite-cm5016000/\n - GLOTRENDS Aluminum CM5 Heatsink: https://amzn.to/45YACBV\n - Patriot P300 256GB NVMe SSD 10-pack: https://amzn.to/4lPJ0JC\n - GigaPlus 2.5 Gbps 10 port PoE+ switch: https://amzn.to/3UNOwSd\n - GigaPlus 10\" Rack Mount 3D Print ears: https://www.printables.com/model/1215585-unified-10-rack-gigaplus-switch-mounting-ears\n - Monoprice Cat6A SlimRun 6\" Cat6 patch cables (10 pack): https://amzn.to/4fX1gzr\n - ioplex SFP+ Twinax DAC patch cable: https://amzn.to/47UlPKX\n - DeskPi RackMate TT: https://amzn.to/3UUjCHP\n\nOther resources mentioned in the video:\n\n - My older Compute Blade video: https://www.youtube.com/watch?v=rKDGlpnP-vE\n - Xerxes Pi Kickstarter: https://www.kickstarter.com/projects/1907647187/small-board-big-possibilities-xerxes-pi\n - Xerxes Pi testing: https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/753\n - Unredacted Labs' Tor exit cluster: https://unredacted.org/blog/2025/05/unredacted-labs/\n - World's Largest Pi Cluster at UC Santa Barbara: https://www.independent.com/2025/04/29/worlds-biggest-raspberry-pi-cluster-is-now-at-uc-santa-barbara/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - 2 years 2 long\n00:32 - Another blade\n01:30 - Unboxing a cluster\n03:06 - Assembling one of 10\n06:11 - A bandolier of microSD cards\n07:16 - Assembling blades 2-10\n08:16 - Next steps - fans and storage\n10:17 - Flashing NVMe drives\n11:00 - Only Fan Units\n12:45 - They all just... disappeared\n14:33 - Spending another $200\n15:45 - Cluster benchmarks: HPL\n16:23 - Spending another $70\n17:03 - Framework cluster vs Pi cluster\n18:12 - AI clustering (down one node)\n19:26 - llama.cpp is totally RPC\n20:54 - Exo and Distributed Llama\n22:09 - Blade (the movie) vs blade (the compute)", "I regret building a $3000 Pi AI Cluster", "https://www.youtube.com/watch?v=8SiB-bNyP5E", "8SiB-bNyP5E", 1429, false, "/downloads/JeffGeerling/2025-09-19 I regret building a $3000 Pi AI Cluster/I regret building a $3000 Pi AI Cluster [8SiB-bNyP5E].mkv", false, 7, ~U[2025-09-19 14:00:14Z]] 08:52:31.738 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=68.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 08:52:31.738 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=4.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:52:31.739 [debug] QUERY OK source="media_items" db=0.2ms idle=4.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 [9106] 08:52:31.739 [debug] Current batch of media processed. Will check again in 1000ms 08:52:32.740 [debug] Current batch of media processed. Will check again in 1000ms 08:52:33.741 [debug] Current batch of media processed. Will check again in 1000ms 08:52:34.742 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "The number of Raspberry Pis orbiting the earth is about to increase.\n\nThanks to everyone who helped me make this video, over the past year! I learned a LOT (especially how much I don't know) about CubeSats, Ground Stations, amateur radio for space, and more.\n\nMentioned in this video:\n\n - SilverSat: https://silversat.org\n - Build a CubeSat: https://www.youtube.com/@buildacubesat\n - CubeSat TEMPEST: https://ethoslabs.space\n - Tim Fowler's CubeSat Collection on Level 2 Jeff: https://www.youtube.com/watch?v=woO0w92YuC0\n - Saveitforparts: https://www.youtube.com/@saveitforparts\n - RASCube: https://www.robinson-aerospace.com\n - MySat: https://www.mysatkit.com\n - GASPACS: https://artsci.usu.edu/physics/gas/projects/gaspacs\n - Mark Rober's SatGus: https://space.crunchlabs.com\n - Astro Pi: https://astro-pi.org\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Pis in Space!\n01:14 - CubeSat 101\n04:08 - Engineering challenges\n06:48 - MySat\n07:47 - RASCube\n08:43 - Build a CubeSat\n09:16 - CubeSat T.E.M.P.E.S.T.\n11:04 - SilverSat\n12:27 - Dave and Leticia\n15:10 - CubeSat Launch Initiative\n17:09 - The mission is just beginning\n18:14 - Why Raspberry Pi?\n19:49 - Pi security on orbit\n21:12 - Radio communications\n22:42 - Tracking sats from Earth with saveitforparts\n26:16 - What frequency?", "duration" => 1703, "filename" => "/downloads/JeffGeerling/2025-09-12 PIS IN SPACE!/PIS IN SPACE! [qvN3sE2Nv4U].mkv", "id" => "qvN3sE2Nv4U", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=qvN3sE2Nv4U", "playlist_index" => 16, "timestamp" => 1757685684, "title" => "PIS IN SPACE!", "upload_date" => "20250912"} 08:52:34.743 [debug] QUERY OK source="sources" db=0.1ms 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" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 08:52:34.743 [debug] QUERY OK source="sources" db=0.2ms idle=1074.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:52:34.744 [debug] QUERY OK source="media_items" db=0.6ms idle=1074.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-12 14:01:24Z], 7] 08:52:34.746 [debug] QUERY OK source="media_items" db=1.0ms idle=1072.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The number of Raspberry Pis orbiting the earth is about to increase.\n\nThanks to everyone who helped me make this video, over the past year! I learned a LOT (especially how much I don't know) about CubeSats, Ground Stations, amateur radio for space, and more.\n\nMentioned in this video:\n\n - SilverSat: https://silversat.org\n - Build a CubeSat: https://www.youtube.com/@buildacubesat\n - CubeSat TEMPEST: https://ethoslabs.space\n - Tim Fowler's CubeSat Collection on Level 2 Jeff: https://www.youtube.com/watch?v=woO0w92YuC0\n - Saveitforparts: https://www.youtube.com/@saveitforparts\n - RASCube: https://www.robinson-aerospace.com\n - MySat: https://www.mysatkit.com\n - GASPACS: https://artsci.usu.edu/physics/gas/projects/gaspacs\n - Mark Rober's SatGus: https://space.crunchlabs.com\n - Astro Pi: https://astro-pi.org\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Pis in Space!\n01:14 - CubeSat 101\n04:08 - Engineering challenges\n06:48 - MySat\n07:47 - RASCube\n08:43 - Build a CubeSat\n09:16 - CubeSat T.E.M.P.E.S.T.\n11:04 - SilverSat\n12:27 - Dave and Leticia\n15:10 - CubeSat Launch Initiative\n17:09 - The mission is just beginning\n18:14 - Why Raspberry Pi?\n19:49 - Pi security on orbit\n21:12 - Radio communications\n22:42 - Tracking sats from Earth with saveitforparts\n26:16 - What frequency?", "PIS IN SPACE!", "7dfd1104-4a11-4121-bbf3-19203968ba6a", "https://www.youtube.com/watch?v=qvN3sE2Nv4U", "qvN3sE2Nv4U", false, 1703, false, 16, "/downloads/JeffGeerling/2025-09-12 PIS IN SPACE!/PIS IN SPACE! [qvN3sE2Nv4U].mkv", false, false, 7, [], 98, ~U[2025-09-12 14:01:24Z], ~U[2025-12-23 08:52:34Z], ~U[2025-12-23 08:52:34Z], "The number of Raspberry Pis orbiting the earth is about to increase.\n\nThanks to everyone who helped me make this video, over the past year! I learned a LOT (especially how much I don't know) about CubeSats, Ground Stations, amateur radio for space, and more.\n\nMentioned in this video:\n\n - SilverSat: https://silversat.org\n - Build a CubeSat: https://www.youtube.com/@buildacubesat\n - CubeSat TEMPEST: https://ethoslabs.space\n - Tim Fowler's CubeSat Collection on Level 2 Jeff: https://www.youtube.com/watch?v=woO0w92YuC0\n - Saveitforparts: https://www.youtube.com/@saveitforparts\n - RASCube: https://www.robinson-aerospace.com\n - MySat: https://www.mysatkit.com\n - GASPACS: https://artsci.usu.edu/physics/gas/projects/gaspacs\n - Mark Rober's SatGus: https://space.crunchlabs.com\n - Astro Pi: https://astro-pi.org\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Pis in Space!\n01:14 - CubeSat 101\n04:08 - Engineering challenges\n06:48 - MySat\n07:47 - RASCube\n08:43 - Build a CubeSat\n09:16 - CubeSat T.E.M.P.E.S.T.\n11:04 - SilverSat\n12:27 - Dave and Leticia\n15:10 - CubeSat Launch Initiative\n17:09 - The mission is just beginning\n18:14 - Why Raspberry Pi?\n19:49 - Pi security on orbit\n21:12 - Radio communications\n22:42 - Tracking sats from Earth with saveitforparts\n26:16 - What frequency?", "PIS IN SPACE!", "https://www.youtube.com/watch?v=qvN3sE2Nv4U", "qvN3sE2Nv4U", 1703, false, "/downloads/JeffGeerling/2025-09-12 PIS IN SPACE!/PIS IN SPACE! [qvN3sE2Nv4U].mkv", false, 7, ~U[2025-09-12 14:01:24Z]] 08:52:34.746 [debug] QUERY OK source="sources" db=0.2ms idle=71.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 08:52:34.747 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=3.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:52:34.748 [debug] QUERY OK source="media_items" db=0.2ms 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 [3411] 08:52:34.748 [debug] Current batch of media processed. Will check again in 1000ms 08:52:35.749 [debug] Current batch of media processed. Will check again in 1000ms 08:52:36.750 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "I'm just a guy who drives a car.\n\nMentioned in this video:\n\n - Electric Car GitHub repo: https://github.com/geerlingguy/electric-car\n - Level 1 J1772 charger (Lectron): https://amzn.to/3HIt2Tx\n - Level 2 J1772 charger (Grizzl-E): https://amzn.to/4k0tHwX\n - Level 3 CCS1 to CHAdeMO adapter (A2Z): https://a2zevshop.com/products/ccs1-to-chademo\n - LeLink 2 OBD-II BLE dongle: https://amzn.to/45GYUls\n - LeafSpy Pro App: https://leafspy.com/\n - CarlinKit 5.0 Wireless CarPlay/Android Auto adapter: https://amzn.to/3SW9AVH\n - VIOFO A119 Mini Dashcam: https://amzn.to/4n8HqEB\n - Dongar wiring harness adapter (for dashcam): https://amzn.to/44hbi9f\n - Technology Connections video on car chargers: https://www.youtube.com/watch?v=W96a8svXo14\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - The cheapest used EV\n01:49 - Range anxiety, off the lot\n02:37 - Fixing problems on my new old car\n04:39 - Charging was more confusing than I expected\n06:42 - Modern car design frustrations\n09:01 - An embarassing car wash\n11:06 - Batteries and CHAdeMO cost me $1000\n14:00 - Range anxiety is overrated (mostly)\n15:06 - Things I love: one-pedal driving\n17:06 - Buttons are good!\n18:28 - Maintenance and tire wear\n19:29 - Cheap EV, not cheap car\n20:10 - Range anxiety is real\n21:52 - Fast charging is harder than gas/petrol\n25:35 - Fit for me, maybe not for thee", "duration" => 1555, "filename" => "/downloads/JeffGeerling/2025-09-04 Do I regret buying the cheapest EV?/Do I regret buying the cheapest EV? [hQQtFnLefqw].mkv", "id" => "hQQtFnLefqw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=hQQtFnLefqw", "playlist_index" => 17, "timestamp" => 1756994471, "title" => "Do I regret buying the cheapest EV?", "upload_date" => "20250904"} 08:52:36.751 [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" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 08:52:36.751 [debug] QUERY OK source="sources" db=0.1ms idle=82.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 08:52:36.752 [debug] QUERY OK source="media_items" db=0.7ms idle=82.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-04 14:01:11Z], 7] 08:52:36.754 [debug] QUERY OK source="media_items" db=1.5ms idle=83.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["I'm just a guy who drives a car.\n\nMentioned in this video:\n\n - Electric Car GitHub repo: https://github.com/geerlingguy/electric-car\n - Level 1 J1772 charger (Lectron): https://amzn.to/3HIt2Tx\n - Level 2 J1772 charger (Grizzl-E): https://amzn.to/4k0tHwX\n - Level 3 CCS1 to CHAdeMO adapter (A2Z): https://a2zevshop.com/products/ccs1-to-chademo\n - LeLink 2 OBD-II BLE dongle: https://amzn.to/45GYUls\n - LeafSpy Pro App: https://leafspy.com/\n - CarlinKit 5.0 Wireless CarPlay/Android Auto adapter: https://amzn.to/3SW9AVH\n - VIOFO A119 Mini Dashcam: https://amzn.to/4n8HqEB\n - Dongar wiring harness adapter (for dashcam): https://amzn.to/44hbi9f\n - Technology Connections video on car chargers: https://www.youtube.com/watch?v=W96a8svXo14\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - The cheapest used EV\n01:49 - Range anxiety, off the lot\n02:37 - Fixing problems on my new old car\n04:39 - Charging was more confusing than I expected\n06:42 - Modern car design frustrations\n09:01 - An embarassing car wash\n11:06 - Batteries and CHAdeMO cost me $1000\n14:00 - Range anxiety is overrated (mostly)\n15:06 - Things I love: one-pedal driving\n17:06 - Buttons are good!\n18:28 - Maintenance and tire wear\n19:29 - Cheap EV, not cheap car\n20:10 - Range anxiety is real\n21:52 - Fast charging is harder than gas/petrol\n25:35 - Fit for me, maybe not for thee", "Do I regret buying the cheapest EV?", "16be95ce-e08d-4e20-9628-60f4f7662e20", "https://www.youtube.com/watch?v=hQQtFnLefqw", "hQQtFnLefqw", false, 1555, false, 17, "/downloads/JeffGeerling/2025-09-04 Do I regret buying the cheapest EV?/Do I regret buying the cheapest EV? [hQQtFnLefqw].mkv", false, false, 7, [], 98, ~U[2025-09-04 14:01:11Z], ~U[2025-12-23 08:52:36Z], ~U[2025-12-23 08:52:36Z], "I'm just a guy who drives a car.\n\nMentioned in this video:\n\n - Electric Car GitHub repo: https://github.com/geerlingguy/electric-car\n - Level 1 J1772 charger (Lectron): https://amzn.to/3HIt2Tx\n - Level 2 J1772 charger (Grizzl-E): https://amzn.to/4k0tHwX\n - Level 3 CCS1 to CHAdeMO adapter (A2Z): https://a2zevshop.com/products/ccs1-to-chademo\n - LeLink 2 OBD-II BLE dongle: https://amzn.to/45GYUls\n - LeafSpy Pro App: https://leafspy.com/\n - CarlinKit 5.0 Wireless CarPlay/Android Auto adapter: https://amzn.to/3SW9AVH\n - VIOFO A119 Mini Dashcam: https://amzn.to/4n8HqEB\n - Dongar wiring harness adapter (for dashcam): https://amzn.to/44hbi9f\n - Technology Connections video on car chargers: https://www.youtube.com/watch?v=W96a8svXo14\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - The cheapest used EV\n01:49 - Range anxiety, off the lot\n02:37 - Fixing problems on my new old car\n04:39 - Charging was more confusing than I expected\n06:42 - Modern car design frustrations\n09:01 - An embarassing car wash\n11:06 - Batteries and CHAdeMO cost me $1000\n14:00 - Range anxiety is overrated (mostly)\n15:06 - Things I love: one-pedal driving\n17:06 - Buttons are good!\n18:28 - Maintenance and tire wear\n19:29 - Cheap EV, not cheap car\n20:10 - Range anxiety is real\n21:52 - Fast charging is harder than gas/petrol\n25:35 - Fit for me, maybe not for thee", "Do I regret buying the cheapest EV?", "https://www.youtube.com/watch?v=hQQtFnLefqw", "hQQtFnLefqw", 1555, false, "/downloads/JeffGeerling/2025-09-04 Do I regret buying the cheapest EV?/Do I regret buying the cheapest EV? [hQQtFnLefqw].mkv", false, 7, ~U[2025-09-04 14:01:11Z]] 08:52:36.755 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [7] 08:52:36.755 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:52:36.756 [debug] QUERY OK source="media_items" db=0.2ms idle=4.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 [1947] 08:52:36.756 [debug] Current batch of media processed. Will check again in 1000ms 08:52:37.757 [debug] Current batch of media processed. Will check again in 1000ms 08:52:38.758 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Finally, TrueNAS runs on a Raspberry Pi—or any other Arm server with UEFI support!\n\nFULL instructions here: https://www.jeffgeerling.com/blog/2025/how-install-truenas-on-raspberry-pi\n\nMentioned in this video:\n\n - Joel0's TrueNAS on Arm thread: https://forums.truenas.com/t/truenas-on-arm-now-available/49160\n - Links to all the TrueNAS on Arm resources: https://github.com/joel0-truenas/truenas-on-arm/issues/5\n - My arm-nas GitHub project: https://github.com/geerlingguy/arm-nas\n - HL15 Arm ZFS server: https://www.youtube.com/watch?v=Hz5k5WgTkcc\n - Raspberry Pi SATA ZFS server: https://www.youtube.com/watch?v=l30sADfDiM8\n - Homelabs Pi Storage NAS project: https://homepinas.com/en/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nThe Homelabs Pi Server was sent to me by a member of Homelabs Club for testing, and following my typical policy, I am thus marking this video as 'sponsored'. No money exchanged hands, and nobody had any say in the content of this video besides me.\n\nContents:\n\n00:00 - TrueNAS comes to Arm\n01:21 - The UEFI problem\n02:03 - Adding UEFI to Raspberry Pi\n03:24 - Install TrueNAS on Pi\n05:34 - Real-world Pi NAS - HomePiNAS\n06:17 - ZFS on Pi NAS\n06:50 - Should you do it?", "duration" => 438, "filename" => "/downloads/JeffGeerling/2025-08-28 TrueNAS on a custom Raspberry Pi NAS/TrueNAS on a custom Raspberry Pi NAS [XvaXemGDSpk].mkv", "id" => "XvaXemGDSpk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=XvaXemGDSpk", "playlist_index" => 18, "timestamp" => 1756389660, "title" => "TrueNAS on a custom Raspberry Pi NAS", "upload_date" => "20250828"} 08:52:38.760 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms 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" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 08:52:38.760 [debug] QUERY OK source="sources" db=0.2ms idle=90.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:52:38.761 [debug] QUERY OK source="media_items" db=0.7ms idle=91.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-28 14:01:00Z], 7] 08:52:38.762 [debug] QUERY OK source="media_items" db=0.9ms idle=92.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Finally, TrueNAS runs on a Raspberry Pi—or any other Arm server with UEFI support!\n\nFULL instructions here: https://www.jeffgeerling.com/blog/2025/how-install-truenas-on-raspberry-pi\n\nMentioned in this video:\n\n - Joel0's TrueNAS on Arm thread: https://forums.truenas.com/t/truenas-on-arm-now-available/49160\n - Links to all the TrueNAS on Arm resources: https://github.com/joel0-truenas/truenas-on-arm/issues/5\n - My arm-nas GitHub project: https://github.com/geerlingguy/arm-nas\n - HL15 Arm ZFS server: https://www.youtube.com/watch?v=Hz5k5WgTkcc\n - Raspberry Pi SATA ZFS server: https://www.youtube.com/watch?v=l30sADfDiM8\n - Homelabs Pi Storage NAS project: https://homepinas.com/en/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nThe Homelabs Pi Server was sent to me by a member of Homelabs Club for testing, and following my typical policy, I am thus marking this video as 'sponsored'. No money exchanged hands, and nobody had any say in the content of this video besides me.\n\nContents:\n\n00:00 - TrueNAS comes to Arm\n01:21 - The UEFI problem\n02:03 - Adding UEFI to Raspberry Pi\n03:24 - Install TrueNAS on Pi\n05:34 - Real-world Pi NAS - HomePiNAS\n06:17 - ZFS on Pi NAS\n06:50 - Should you do it?", "TrueNAS on a custom Raspberry Pi NAS", "4b5c606f-8804-4138-af38-1bcb70f39d3b", "https://www.youtube.com/watch?v=XvaXemGDSpk", "XvaXemGDSpk", false, 438, false, 18, "/downloads/JeffGeerling/2025-08-28 TrueNAS on a custom Raspberry Pi NAS/TrueNAS on a custom Raspberry Pi NAS [XvaXemGDSpk].mkv", false, false, 7, [], 98, ~U[2025-08-28 14:01:00Z], ~U[2025-12-23 08:52:38Z], ~U[2025-12-23 08:52:38Z], "Finally, TrueNAS runs on a Raspberry Pi—or any other Arm server with UEFI support!\n\nFULL instructions here: https://www.jeffgeerling.com/blog/2025/how-install-truenas-on-raspberry-pi\n\nMentioned in this video:\n\n - Joel0's TrueNAS on Arm thread: https://forums.truenas.com/t/truenas-on-arm-now-available/49160\n - Links to all the TrueNAS on Arm resources: https://github.com/joel0-truenas/truenas-on-arm/issues/5\n - My arm-nas GitHub project: https://github.com/geerlingguy/arm-nas\n - HL15 Arm ZFS server: https://www.youtube.com/watch?v=Hz5k5WgTkcc\n - Raspberry Pi SATA ZFS server: https://www.youtube.com/watch?v=l30sADfDiM8\n - Homelabs Pi Storage NAS project: https://homepinas.com/en/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nThe Homelabs Pi Server was sent to me by a member of Homelabs Club for testing, and following my typical policy, I am thus marking this video as 'sponsored'. No money exchanged hands, and nobody had any say in the content of this video besides me.\n\nContents:\n\n00:00 - TrueNAS comes to Arm\n01:21 - The UEFI problem\n02:03 - Adding UEFI to Raspberry Pi\n03:24 - Install TrueNAS on Pi\n05:34 - Real-world Pi NAS - HomePiNAS\n06:17 - ZFS on Pi NAS\n06:50 - Should you do it?", "TrueNAS on a custom Raspberry Pi NAS", "https://www.youtube.com/watch?v=XvaXemGDSpk", "XvaXemGDSpk", 438, false, "/downloads/JeffGeerling/2025-08-28 TrueNAS on a custom Raspberry Pi NAS/TrueNAS on a custom Raspberry Pi NAS [XvaXemGDSpk].mkv", false, 7, ~U[2025-08-28 14:01:00Z]] 08:52:38.763 [debug] QUERY OK source="sources" db=0.1ms 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] 08:52:38.763 [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] 08:52:38.764 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms 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 [1949] 08:52:38.764 [debug] Current batch of media processed. Will check again in 1000ms 08:52:39.765 [debug] Current batch of media processed. Will check again in 1000ms 08:52:40.766 [debug] Current batch of media processed. Will check again in 1000ms 08:52:41.768 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Taking it apart is usually a better option than turning it on.\n\nTrack all the work I'm doing on Retro Macs: https://github.com/geerlingguy/retro-computers\n\nAlso check out Infinite Mac—you can enjoy retro Mac software in the comfort of your browser, and not have to restore a 35 year old Mac like I did! https://infinitemac.org/\n\nParts list:\n\n - Console5 - Analog board (630-0395) caps: https://console5.com/store/macintosh-classic-analog-pcb-cap-kit.html\n - Console5 - Logic board tantalum caps: https://console5.com/store/macintosh-classic-smd-tantalum-main-pcb-cap-kit.html\n - Mac Memories - 2x 1MB SIMMs: https://www.ebay.com/itm/144565895077\n - MacBatt Internal CR2032 PRAM replacement: https://www.tindie.com/products/jurassicomp/macbatt-internal-cr2032-pram-macintosh-battery/\n\nSome videos referenced in this video:\n\n - Mac84 - Repairing a Sad Quadra 840AV: https://www.youtube.com/watch?v=LBgr5mdimRY\n - Peter Cetinski - RIFA AC Cap Blowup: https://www.youtube.com/watch?v=njbwdbcfXjc\n - iiiDIY Recapping 20th Anniversary Mac: https://youtu.be/mabH-YB6kn4?t=683\n\nMusic in this video by LOOK MUM NO COMPUTER: https://www.youtube.com/watch?v=M47dXmZUnBc\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://redshirtjeff.com\n2nd Channel: https://www.youtube.com/c/GeerlingEngineering\n\nContents:\n\n00:00 - Long screwdrivers and old computer problems\n03:18 - Tools of the trade\n05:09 - Cracking open the Mac\n07:41 - Breaking the anode, safely\n09:36 - Logic board removal\n11:06 - Analog board and CRT neck board removal\n12:50 - Recapping the Analog board\n18:08 - Recapping the Logic board\n21:29 - Tantalum caps, MacBatt, and 4 MB RAM upgrade\n23:02 - Re-assembling the Classic\n23:51 - First power\n25:53 - Computing like it's 1991\n28:45 - Revealing the build, reliving the memories\n30:41 - More Macs?", "duration" => 1887, "filename" => "/downloads/JeffGeerling/2025-08-22 Try not to kill yourself saving an old Macintosh/Try not to kill yourself saving an old Macintosh [779nru5udpQ].mkv", "id" => "779nru5udpQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=779nru5udpQ", "playlist_index" => 19, "timestamp" => 1755871218, "title" => "Try not to kill yourself saving an old Macintosh", "upload_date" => "20250822"} 08:52:41.768 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1098.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:52:41.769 [debug] QUERY OK source="sources" db=0.2ms idle=1099.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] 08:52:41.770 [debug] QUERY OK source="media_items" db=0.7ms idle=1099.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-22 14:00:18Z], 7] 08:52:41.772 [debug] QUERY OK source="media_items" db=1.5ms idle=1083.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Taking it apart is usually a better option than turning it on.\n\nTrack all the work I'm doing on Retro Macs: https://github.com/geerlingguy/retro-computers\n\nAlso check out Infinite Mac—you can enjoy retro Mac software in the comfort of your browser, and not have to restore a 35 year old Mac like I did! https://infinitemac.org/\n\nParts list:\n\n - Console5 - Analog board (630-0395) caps: https://console5.com/store/macintosh-classic-analog-pcb-cap-kit.html\n - Console5 - Logic board tantalum caps: https://console5.com/store/macintosh-classic-smd-tantalum-main-pcb-cap-kit.html\n - Mac Memories - 2x 1MB SIMMs: https://www.ebay.com/itm/144565895077\n - MacBatt Internal CR2032 PRAM replacement: https://www.tindie.com/products/jurassicomp/macbatt-internal-cr2032-pram-macintosh-battery/\n\nSome videos referenced in this video:\n\n - Mac84 - Repairing a Sad Quadra 840AV: https://www.youtube.com/watch?v=LBgr5mdimRY\n - Peter Cetinski - RIFA AC Cap Blowup: https://www.youtube.com/watch?v=njbwdbcfXjc\n - iiiDIY Recapping 20th Anniversary Mac: https://youtu.be/mabH-YB6kn4?t=683\n\nMusic in this video by LOOK MUM NO COMPUTER: https://www.youtube.com/watch?v=M47dXmZUnBc\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://redshirtjeff.com\n2nd Channel: https://www.youtube.com/c/GeerlingEngineering\n\nContents:\n\n00:00 - Long screwdrivers and old computer problems\n03:18 - Tools of the trade\n05:09 - Cracking open the Mac\n07:41 - Breaking the anode, safely\n09:36 - Logic board removal\n11:06 - Analog board and CRT neck board removal\n12:50 - Recapping the Analog board\n18:08 - Recapping the Logic board\n21:29 - Tantalum caps, MacBatt, and 4 MB RAM upgrade\n23:02 - Re-assembling the Classic\n23:51 - First power\n25:53 - Computing like it's 1991\n28:45 - Revealing the build, reliving the memories\n30:41 - More Macs?", "Try not to kill yourself saving an old Macintosh", "a01bfea0-77d8-49c3-af2b-003e9bfb1d7b", "https://www.youtube.com/watch?v=779nru5udpQ", "779nru5udpQ", false, 1887, false, 19, "/downloads/JeffGeerling/2025-08-22 Try not to kill yourself saving an old Macintosh/Try not to kill yourself saving an old Macintosh [779nru5udpQ].mkv", false, false, 7, [], 97, ~U[2025-08-22 14:00:18Z], ~U[2025-12-23 08:52:41Z], ~U[2025-12-23 08:52:41Z], "Taking it apart is usually a better option than turning it on.\n\nTrack all the work I'm doing on Retro Macs: https://github.com/geerlingguy/retro-computers\n\nAlso check out Infinite Mac—you can enjoy retro Mac software in the comfort of your browser, and not have to restore a 35 year old Mac like I did! https://infinitemac.org/\n\nParts list:\n\n - Console5 - Analog board (630-0395) caps: https://console5.com/store/macintosh-classic-analog-pcb-cap-kit.html\n - Console5 - Logic board tantalum caps: https://console5.com/store/macintosh-classic-smd-tantalum-main-pcb-cap-kit.html\n - Mac Memories - 2x 1MB SIMMs: https://www.ebay.com/itm/144565895077\n - MacBatt Internal CR2032 PRAM replacement: https://www.tindie.com/products/jurassicomp/macbatt-internal-cr2032-pram-macintosh-battery/\n\nSome videos referenced in this video:\n\n - Mac84 - Repairing a Sad Quadra 840AV: https://www.youtube.com/watch?v=LBgr5mdimRY\n - Peter Cetinski - RIFA AC Cap Blowup: https://www.youtube.com/watch?v=njbwdbcfXjc\n - iiiDIY Recapping 20th Anniversary Mac: https://youtu.be/mabH-YB6kn4?t=683\n\nMusic in this video by LOOK MUM NO COMPUTER: https://www.youtube.com/watch?v=M47dXmZUnBc\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://redshirtjeff.com\n2nd Channel: https://www.youtube.com/c/GeerlingEngineering\n\nContents:\n\n00:00 - Long screwdrivers and old computer problems\n03:18 - Tools of the trade\n05:09 - Cracking open the Mac\n07:41 - Breaking the anode, safely\n09:36 - Logic board removal\n11:06 - Analog board and CRT neck board removal\n12:50 - Recapping the Analog board\n18:08 - Recapping the Logic board\n21:29 - Tantalum caps, MacBatt, and 4 MB RAM upgrade\n23:02 - Re-assembling the Classic\n23:51 - First power\n25:53 - Computing like it's 1991\n28:45 - Revealing the build, reliving the memories\n30:41 - More Macs?", "Try not to kill yourself saving an old Macintosh", "https://www.youtube.com/watch?v=779nru5udpQ", "779nru5udpQ", 1887, false, "/downloads/JeffGeerling/2025-08-22 Try not to kill yourself saving an old Macintosh/Try not to kill yourself saving an old Macintosh [779nru5udpQ].mkv", false, 7, ~U[2025-08-22 14:00:18Z]] 08:52:41.773 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=83.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] 08:52:41.773 [debug] QUERY OK source="media_profiles" db=0.1ms idle=4.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:52:41.774 [debug] QUERY OK source="media_items" db=0.2ms idle=4.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 [1951] 08:52:41.774 [debug] Current batch of media processed. Will check again in 1000ms 08:52:42.775 [debug] Current batch of media processed. Will check again in 1000ms 08:52:43.598 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@JeffGeerling --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/JeffGeerling/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/fb/53/fb53aebe55354d9d221176422d5feddd43e238c96dad99d3dca0be39a56051db.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/88/a6/88a64b38b34e32014fd355157fe1e30ab94268ccdaf19f36951ec3e25b0fb091.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 101 with: 08:52:43.599 [debug] Gracefully stopping file follower 08:52:43.600 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=1827.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] 08:52:43.600 [debug] QUERY OK source="sources" db=0.2ms idle=1827.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:52:43.601 [debug] QUERY OK source="media_items" db=0.6ms idle=1827.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-22 16:23:09Z], 7] 08:52:43.602 [debug] QUERY OK source="media_items" db=0.9ms idle=1827.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["...but most people would never know.\n\nThe two posts referenced in this video:\n\n - Primary time scale failure: https://groups.google.com/a/list.nist.gov/g/internet-time-service/c/o0dDDcr1a8I\n - Update on Internet Time Services: https://groups.google.com/a/list.nist.gov/g/internet-time-service/c/OHOO_1OYjLY\n\nAlso check out the status of all NIST Internet Time Servers: https://tf.nist.gov/tf-cgi/servers.cgi\n\nThumbnail photos were adapted from Wikipedia Commons / US Government Public domain images:\n\n - https://www.nist.gov/pml/time-and-frequency-division/time-and-frequency-metrology-and-distribution\n - https://www.nist.gov/topics/physics/optical-frequency-combs\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - 5 microseconds\n00:39 - What happened?\n02:15 - NTP timing and why it doesn't matter\n03:17 - Timely lessons", "NIST's NTP clock was microseconds from disaster", "a87bec10-91a9-442e-b00e-e800fdb2a533", "https://www.youtube.com/watch?v=ZRB7pjRVVkI", "ZRB7pjRVVkI", false, 317, false, 1, "/downloads/JeffGeerling/2025-12-22 NIST's NTP clock was microseconds from disaster/NIST's NTP clock was microseconds from disaster [ZRB7pjRVVkI].mkv", false, false, 7, [], 98, ~U[2025-12-22 16:23:09Z], ~U[2025-12-23 08:52:43Z], ~U[2025-12-23 08:52:43Z], "...but most people would never know.\n\nThe two posts referenced in this video:\n\n - Primary time scale failure: https://groups.google.com/a/list.nist.gov/g/internet-time-service/c/o0dDDcr1a8I\n - Update on Internet Time Services: https://groups.google.com/a/list.nist.gov/g/internet-time-service/c/OHOO_1OYjLY\n\nAlso check out the status of all NIST Internet Time Servers: https://tf.nist.gov/tf-cgi/servers.cgi\n\nThumbnail photos were adapted from Wikipedia Commons / US Government Public domain images:\n\n - https://www.nist.gov/pml/time-and-frequency-division/time-and-frequency-metrology-and-distribution\n - https://www.nist.gov/topics/physics/optical-frequency-combs\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - 5 microseconds\n00:39 - What happened?\n02:15 - NTP timing and why it doesn't matter\n03:17 - Timely lessons", "NIST's NTP clock was microseconds from disaster", "https://www.youtube.com/watch?v=ZRB7pjRVVkI", "ZRB7pjRVVkI", 317, false, "/downloads/JeffGeerling/2025-12-22 NIST's NTP clock was microseconds from disaster/NIST's NTP clock was microseconds from disaster [ZRB7pjRVVkI].mkv", false, 7, ~U[2025-12-22 16:23:09Z]] 08:52:43.603 [debug] QUERY OK source="sources" db=0.1ms idle=911.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:52:43.604 [debug] QUERY OK source="media_items" db=0.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[2025-12-20 15:00:24Z], 7] 08:52:43.606 [debug] QUERY OK source="media_items" db=1.4ms idle=3.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Shop Micro Center Holiday Deals: https://micro.center/e787eb\nCheck out Micro Center's Other Top Deals: https://micro.center/315b05\nShop Micro Center Bundles: https://micro.center/f7b037\nVisit Micro Center News: https://micro.center/9b77f2\n\nCan a Raspberry Pi match the performance of a modern desktop PC when it comes to GPU performance?\n\nOf course not, in a general sense. But there are specific use cases where you'd be surprised by how close the Pi comes, performance-wise. In some cases, the Pi is actually faster!\n\nResources I mentioned in this video:\n\n - AI Benchmark results and methodology: https://github.com/geerlingguy/ai-benchmarks\n - Multi-GPU benchmark results: https://github.com/geerlingguy/ai-benchmarks/issues/44\n - Use AMD GPUs on Pi: https://www.jeffgeerling.com/blog/2025/using-amd-gpus-on-raspberry-pi-without-recompiling-linux\n - Use Nvidia GPUs on Pi: https://www.jeffgeerling.com/blog/2025/nvidia-graphics-cards-work-on-pi-5-and-rockchip\n - Use Intel GPUs on Pi: https://www.jeffgeerling.com/blog/2025/all-intel-gpus-run-on-raspberry-pi-and-risc-v\n\neGPU Setup (some links are affiliate links):\n\n - Minisforum DEG1 eGPU Dock: https://amzn.to/4s3gUz6\n - Micro SATA Cables Oculink to M.2 adapter: https://amzn.to/49dKKcE\n - Super Flower 850W PSU: https://www.microcenter.com/product/684393/super-flower-leadex-iii-gold-up-850-watt-80-plus-gold-atx-fully-modular-power-supply-atx-31-compatible\n - AMD Radeon AI Pro R9700: https://www.microcenter.com/product/702853/xfx-amd-radeon-ai-pro-r9700-single-fan-32gb-gddr6-pcie-50-graphics-card\n\nDual GPU Setup (some links are affiliate links):\n\n - chenyang PCIe 4.0 M.2 NGFF to SFF-8643: https://amzn.to/4pyqSqt\n - 10Gtek SFF-8644 to SFF-8643 Cable: https://amzn.to/3MKNbup\n - Dolphin PCIe HBA MXH932: https://dolphinics.com/products/MXH932.html\n - Dolphin 3 slot PCIe Backplane: https://dolphinics.com/products/IBP-G4X16-3.html\n\nHUGE thanks to Patrick from @ServeTheHomeVideo for helping me record at Micro Center in Phoenix :)\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Pi vs PC\n00:53 - Enough for Jellyfin? Local LLMs?\n01:50 - 4 GPUs 1 Pi\n02:16 - Comparing costs and energy use\n03:07 - Gaming on haitus (for now)\n03:39 - The setups\n04:56 - ffmpeg and Jellyfin media transcoding\n07:31 - 3D rendering with GravityMark\n08:39 - LLMs on AMD\n09:36 - LLMs on Nvidia\n12:27 - Drivers, Vulkan, and CUDA\n13:06 - Dual GPU - Setup\n15:24 - Sharing memory and PCIe ACS\n16:28 - llama.cpp performance - mixed Nvidia GPUs\n17:08 - 52GB of VRAM on AMD\n17:28 - Intel PC dual Nvidia GPU comparison\n17:56 - Who wins?", "2 GPUs 1 Pi", "c3e7b893-ea13-4fb3-939c-94ff0867636d", "https://www.youtube.com/watch?v=8X2Y62JGDCo", "8X2Y62JGDCo", false, 1120, false, 2, "/downloads/JeffGeerling/2025-12-20 2 GPUs 1 Pi/2 GPUs 1 Pi [8X2Y62JGDCo].mkv", false, false, 7, [], 98, ~U[2025-12-20 15:00:24Z], ~U[2025-12-23 08:52:43Z], ~U[2025-12-23 08:52:43Z], "Shop Micro Center Holiday Deals: https://micro.center/e787eb\nCheck out Micro Center's Other Top Deals: https://micro.center/315b05\nShop Micro Center Bundles: https://micro.center/f7b037\nVisit Micro Center News: https://micro.center/9b77f2\n\nCan a Raspberry Pi match the performance of a modern desktop PC when it comes to GPU performance?\n\nOf course not, in a general sense. But there are specific use cases where you'd be surprised by how close the Pi comes, performance-wise. In some cases, the Pi is actually faster!\n\nResources I mentioned in this video:\n\n - AI Benchmark results and methodology: https://github.com/geerlingguy/ai-benchmarks\n - Multi-GPU benchmark results: https://github.com/geerlingguy/ai-benchmarks/issues/44\n - Use AMD GPUs on Pi: https://www.jeffgeerling.com/blog/2025/using-amd-gpus-on-raspberry-pi-without-recompiling-linux\n - Use Nvidia GPUs on Pi: https://www.jeffgeerling.com/blog/2025/nvidia-graphics-cards-work-on-pi-5-and-rockchip\n - Use Intel GPUs on Pi: https://www.jeffgeerling.com/blog/2025/all-intel-gpus-run-on-raspberry-pi-and-risc-v\n\neGPU Setup (some links are affiliate links):\n\n - Minisforum DEG1 eGPU Dock: https://amzn.to/4s3gUz6\n - Micro SATA Cables Oculink to M.2 adapter: https://amzn.to/49dKKcE\n - Super Flower 850W PSU: https://www.microcenter.com/product/684393/super-flower-leadex-iii-gold-up-850-watt-80-plus-gold-atx-fully-modular-power-supply-atx-31-compatible\n - AMD Radeon AI Pro R9700: https://www.microcenter.com/product/702853/xfx-amd-radeon-ai-pro-r9700-single-fan-32gb-gddr6-pcie-50-graphics-card\n\nDual GPU Setup (some links are affiliate links):\n\n - chenyang PCIe 4.0 M.2 NGFF to SFF-8643: https://amzn.to/4pyqSqt\n - 10Gtek SFF-8644 to SFF-8643 Cable: https://amzn.to/3MKNbup\n - Dolphin PCIe HBA MXH932: https://dolphinics.com/products/MXH932.html\n - Dolphin 3 slot PCIe Backplane: https://dolphinics.com/products/IBP-G4X16-3.html\n\nHUGE thanks to Patrick from @ServeTheHomeVideo for helping me record at Micro Center in Phoenix :)\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Pi vs PC\n00:53 - Enough for Jellyfin? Local LLMs?\n01:50 - 4 GPUs 1 Pi\n02:16 - Comparing costs and energy use\n03:07 - Gaming on haitus (for now)\n03:39 - The setups\n04:56 - ffmpeg and Jellyfin media transcoding\n07:31 - 3D rendering with GravityMark\n08:39 - LLMs on AMD\n09:36 - LLMs on Nvidia\n12:27 - Drivers, Vulkan, and CUDA\n13:06 - Dual GPU - Setup\n15:24 - Sharing memory and PCIe ACS\n16:28 - llama.cpp performance - mixed Nvidia GPUs\n17:08 - 52GB of VRAM on AMD\n17:28 - Intel PC dual Nvidia GPU comparison\n17:56 - Who wins?", "2 GPUs 1 Pi", "https://www.youtube.com/watch?v=8X2Y62JGDCo", "8X2Y62JGDCo", 1120, false, "/downloads/JeffGeerling/2025-12-20 2 GPUs 1 Pi/2 GPUs 1 Pi [8X2Y62JGDCo].mkv", false, 7, ~U[2025-12-20 15:00:24Z]] 08:52:43.606 [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" = ?) [7] 08:52:43.607 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-12-18 14:01:47Z], 7] 08:52:43.608 [debug] QUERY OK source="media_items" db=0.9ms idle=4.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["RDMA over Thunderbolt support landed in macOS 26.2.\n\nIs it good for HPC? For Exo and LLMs? Find out in this video.\n\nResources (some links are affiliate links):\n\n - Mac Studio: https://www.apple.com/mac-studio/\n - Exo 1.0: https://exolabs.net\n - Apple MLX PR for Thunderbolt RDMA: https://github.com/ml-explore/mlx/pull/2808\n - M5 Neural Accelerator speedup: https://machinelearning.apple.com/research/exploring-llms-mlx-m5\n - DeskPi Rackmate TL1: https://amzn.to/4p5ek94\n - Tupavco mini-rack PDU: https://amzn.to/4j0DpAq\n\nDisclaimer: The Mac Studios used in this cluster are on loan from Apple for testing. They are not sponsoring this video, nor had any say in the contents. DeskPi sent the Rackmate TL1 used in the video for my testing, but they also had no say in the video contents. I always add the \"sponsored\" flag on my videos if I did not purchase the equipment being shown.\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - A rack-full of Macs\n02:01 - Putting together a cluster\n03:16 - The downsides of Thunderbolt\n05:09 - One is enough\n07:45 - Managing macOS in a cluster (vs Linux)\n08:37 - HPL and llama.cpp cluster performance\n09:30 - Enabling RDMA\n09:51 - Massive LLMs\n11:34 - RDMA over TB5 is great... when it works\n12:10 - EXO community and OSS\n12:51 - Apple could go harder\n13:30 - Jack of all trades, not just AI", "Apple didn't have to go this hard...", "e233eefb-8cf5-44ec-8e62-d23c1323b199", "https://www.youtube.com/watch?v=x4_RsUxRjKU", "x4_RsUxRjKU", false, 865, false, 3, "/downloads/JeffGeerling/2025-12-18 Apple didn't have to go this hard..#/Apple didn't have to go this hard... [x4_RsUxRjKU].mkv", false, false, 7, [], 98, ~U[2025-12-18 14:01:47Z], ~U[2025-12-23 08:52:43Z], ~U[2025-12-23 08:52:43Z], "RDMA over Thunderbolt support landed in macOS 26.2.\n\nIs it good for HPC? For Exo and LLMs? Find out in this video.\n\nResources (some links are affiliate links):\n\n - Mac Studio: https://www.apple.com/mac-studio/\n - Exo 1.0: https://exolabs.net\n - Apple MLX PR for Thunderbolt RDMA: https://github.com/ml-explore/mlx/pull/2808\n - M5 Neural Accelerator speedup: https://machinelearning.apple.com/research/exploring-llms-mlx-m5\n - DeskPi Rackmate TL1: https://amzn.to/4p5ek94\n - Tupavco mini-rack PDU: https://amzn.to/4j0DpAq\n\nDisclaimer: The Mac Studios used in this cluster are on loan from Apple for testing. They are not sponsoring this video, nor had any say in the contents. DeskPi sent the Rackmate TL1 used in the video for my testing, but they also had no say in the video contents. I always add the \"sponsored\" flag on my videos if I did not purchase the equipment being shown.\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - A rack-full of Macs\n02:01 - Putting together a cluster\n03:16 - The downsides of Thunderbolt\n05:09 - One is enough\n07:45 - Managing macOS in a cluster (vs Linux)\n08:37 - HPL and llama.cpp cluster performance\n09:30 - Enabling RDMA\n09:51 - Massive LLMs\n11:34 - RDMA over TB5 is great... when it works\n12:10 - EXO community and OSS\n12:51 - Apple could go harder\n13:30 - Jack of all trades, not just AI", "Apple didn't have to go this hard...", "https://www.youtube.com/watch?v=x4_RsUxRjKU", "x4_RsUxRjKU", 865, false, "/downloads/JeffGeerling/2025-12-18 Apple didn't have to go this hard..#/Apple didn't have to go this hard... [x4_RsUxRjKU].mkv", false, 7, ~U[2025-12-18 14:01:47Z]] 08:52:43.609 [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" = ?) [7] 08:52:43.609 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-12-12 15:00:58Z], 7] 08:52:43.611 [debug] QUERY OK source="media_items" db=0.9ms idle=3.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Raspberry Pi launched the CM0... in China. Let's take a look at this little stamp-sized Pi.\n\nResources mentioned in this video:\n\n - My test data and discussion: https://github.com/geerlingguy/sbc-reviews/issues/98\n - ED-CM0NANO from EDAtec: https://edatec.cn/docs/cm0nano/ds/\n - Raspberry Pi CM0 discussion on the Pi forum: https://forums.raspberrypi.com/viewtopic.php?t=386639\n - Order the ED-CM0NANO-10000 from DigiKey: https://www.digikey.com/en/products/detail/eda-technology-co-ltd/ED-CM0NANO-10000/28263891\n - Hackster article on CM0: https://www.hackster.io/news/raspberry-pi-unveils-the-18-compute-module-0-but-only-for-chinese-customers-for-now-913bf59ab6cc\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Castellated Computing\n01:01 - EDAtec's CM0NANO dev board\n01:34 - Flashing the CM0's slow eMMC\n02:02 - Chromium runs, but it's not for that\n02:42 - Why in China?", "You can't buy this Raspberry Pi (except in China)", "219fd986-3fe2-4851-8dee-afd049720d1c", "https://www.youtube.com/watch?v=Q6FIcyhjoVo", "Q6FIcyhjoVo", false, 237, false, 4, "/downloads/JeffGeerling/2025-12-12 You can't buy this Raspberry Pi (except in China)/You can't buy this Raspberry Pi (except in China) [Q6FIcyhjoVo].mkv", false, false, 7, [], 98, ~U[2025-12-12 15:00:58Z], ~U[2025-12-23 08:52:43Z], ~U[2025-12-23 08:52:43Z], "Raspberry Pi launched the CM0... in China. Let's take a look at this little stamp-sized Pi.\n\nResources mentioned in this video:\n\n - My test data and discussion: https://github.com/geerlingguy/sbc-reviews/issues/98\n - ED-CM0NANO from EDAtec: https://edatec.cn/docs/cm0nano/ds/\n - Raspberry Pi CM0 discussion on the Pi forum: https://forums.raspberrypi.com/viewtopic.php?t=386639\n - Order the ED-CM0NANO-10000 from DigiKey: https://www.digikey.com/en/products/detail/eda-technology-co-ltd/ED-CM0NANO-10000/28263891\n - Hackster article on CM0: https://www.hackster.io/news/raspberry-pi-unveils-the-18-compute-module-0-but-only-for-chinese-customers-for-now-913bf59ab6cc\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Castellated Computing\n01:01 - EDAtec's CM0NANO dev board\n01:34 - Flashing the CM0's slow eMMC\n02:02 - Chromium runs, but it's not for that\n02:42 - Why in China?", "You can't buy this Raspberry Pi (except in China)", "https://www.youtube.com/watch?v=Q6FIcyhjoVo", "Q6FIcyhjoVo", 237, false, "/downloads/JeffGeerling/2025-12-12 You can't buy this Raspberry Pi (except in China)/You can't buy this Raspberry Pi (except in China) [Q6FIcyhjoVo].mkv", false, 7, ~U[2025-12-12 15:00:58Z]] 08:52:43.611 [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" = ?) [7] 08:52:43.612 [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[2025-12-08 15:00:52Z], 7] 08:52:43.613 [debug] QUERY OK source="media_items" db=0.9ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["It's a Framework 13, but there's no ordinary CPU inside...\n\nResources I mentioned in this video:\n\n - DeepComputing DC-ROMA II: https://store.deepcomputing.io/products/dc-roma-ai-pc-risc-v-mainboard-ii-for-framework-laptop-13\n - All my benchmarking data: https://github.com/geerlingguy/sbc-reviews/issues/82\n - Framework 13 with AMD Ryzen AI 5 340: https://frame.work/laptop13\n - SemiTO-V RP2350 GPIO Expansion Module: https://github.com/semitov/rp2350-gpio-card\n - SemiTO-V MCL Python to MicroPython tool: https://github.com/semitov/SemiTOV-MCL\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - This is not a Framework\n01:49 - Hardware\n04:02 - Strange architecture, seen before\n04:44 - RISC-V in a strange place right now\n05:28 - How is it as a laptop?\n07:18 - NPU and a missing 16 GB of RAM\n08:12 - Benchmarks\n09:20 - Why so inefficient?\n10:19 - A trip back to 2009\n11:49 - It's a Framework though\n12:23 - Upgrading to AMD\n13:04 - 6 cores demolishes 8 cores\n13:57 - Adding 2 more RISC-V cores (via expansion module)\n14:57 - Final thoughts", "This is not a Framework Laptop", "91b61f70-7aae-4b70-8445-390a3a60a111", "https://www.youtube.com/watch?v=OkFfTK8S00c", "OkFfTK8S00c", false, 927, false, 5, "/downloads/JeffGeerling/2025-12-08 This is not a Framework Laptop/This is not a Framework Laptop [OkFfTK8S00c].mkv", false, false, 7, [], 98, ~U[2025-12-08 15:00:52Z], ~U[2025-12-23 08:52:43Z], ~U[2025-12-23 08:52:43Z], "It's a Framework 13, but there's no ordinary CPU inside...\n\nResources I mentioned in this video:\n\n - DeepComputing DC-ROMA II: https://store.deepcomputing.io/products/dc-roma-ai-pc-risc-v-mainboard-ii-for-framework-laptop-13\n - All my benchmarking data: https://github.com/geerlingguy/sbc-reviews/issues/82\n - Framework 13 with AMD Ryzen AI 5 340: https://frame.work/laptop13\n - SemiTO-V RP2350 GPIO Expansion Module: https://github.com/semitov/rp2350-gpio-card\n - SemiTO-V MCL Python to MicroPython tool: https://github.com/semitov/SemiTOV-MCL\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - This is not a Framework\n01:49 - Hardware\n04:02 - Strange architecture, seen before\n04:44 - RISC-V in a strange place right now\n05:28 - How is it as a laptop?\n07:18 - NPU and a missing 16 GB of RAM\n08:12 - Benchmarks\n09:20 - Why so inefficient?\n10:19 - A trip back to 2009\n11:49 - It's a Framework though\n12:23 - Upgrading to AMD\n13:04 - 6 cores demolishes 8 cores\n13:57 - Adding 2 more RISC-V cores (via expansion module)\n14:57 - Final thoughts", "This is not a Framework Laptop", "https://www.youtube.com/watch?v=OkFfTK8S00c", "OkFfTK8S00c", 927, false, "/downloads/JeffGeerling/2025-12-08 This is not a Framework Laptop/This is not a Framework Laptop [OkFfTK8S00c].mkv", false, 7, ~U[2025-12-08 15:00:52Z]] 08:52:43.614 [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" = ?) [7] 08:52:43.614 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-12-04 18:42:58Z], 7] 08:52:43.618 [debug] QUERY OK source="media_items" db=3.5ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Some of the articles and posts I referenced:\n\n - TeamGroup 64GB DDR5 Memory Kit I bought for $209.99 is now $649.99: https://www.microcenter.com/product/680461/teamgroup-t-create-expert-64gb-(2-x-32gb)-ddr5-6400-pc5-51200-cl34-dual-channel-desktop-memory-kit-ctced564g6400hc34bdc01-black\n - PC Part Picker Memory Pricing Trends: https://pcpartpicker.com/trends/price/memory/\n - Samsung can't buy Samsung memory: https://www.pcworld.com/article/2998935/ram-is-so-expensive-samsung-wont-even-sell-it-to-samsung.html\n - Micron stops selling Crucial memory and NVMes: https://investors.micron.com/news-releases/news-release-details/micron-announces-exit-crucial-consumer-business\n - Libre Computer's quote for LPDDR4 4GB RAM increasing beyond entire board BoM: https://x.com/librecomputer/status/1995592912063922578\n - Lenovo Stockpiles RAM for Laptops: https://www.pcworld.com/article/2986266/lenovo-stockpiles-ram-to-hopefully-keep-laptop-prices-down.html\n - Raspberry Pi memory-driven price rises: https://www.raspberrypi.com/news/1gb-raspberry-pi-5-now-available-at-45-and-memory-driven-price-rises/\n - Mono's future production runs impacted by LPDDR4 memory pricing: https://www.youtube.com/watch?v=AyueVGLT7qI\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff", "The RAM Shortage Comes for Us All", "43097d74-3e90-4c89-95e4-677cbbb7f388", "https://www.youtube.com/watch?v=9rbz0akyLyQ", "9rbz0akyLyQ", false, 270, false, 6, "/downloads/JeffGeerling/2025-12-04 The RAM Shortage Comes for Us All/The RAM Shortage Comes for Us All [9rbz0akyLyQ].mkv", false, false, 7, [], 98, ~U[2025-12-04 18:42:58Z], ~U[2025-12-23 08:52:43Z], ~U[2025-12-23 08:52:43Z], "Some of the articles and posts I referenced:\n\n - TeamGroup 64GB DDR5 Memory Kit I bought for $209.99 is now $649.99: https://www.microcenter.com/product/680461/teamgroup-t-create-expert-64gb-(2-x-32gb)-ddr5-6400-pc5-51200-cl34-dual-channel-desktop-memory-kit-ctced564g6400hc34bdc01-black\n - PC Part Picker Memory Pricing Trends: https://pcpartpicker.com/trends/price/memory/\n - Samsung can't buy Samsung memory: https://www.pcworld.com/article/2998935/ram-is-so-expensive-samsung-wont-even-sell-it-to-samsung.html\n - Micron stops selling Crucial memory and NVMes: https://investors.micron.com/news-releases/news-release-details/micron-announces-exit-crucial-consumer-business\n - Libre Computer's quote for LPDDR4 4GB RAM increasing beyond entire board BoM: https://x.com/librecomputer/status/1995592912063922578\n - Lenovo Stockpiles RAM for Laptops: https://www.pcworld.com/article/2986266/lenovo-stockpiles-ram-to-hopefully-keep-laptop-prices-down.html\n - Raspberry Pi memory-driven price rises: https://www.raspberrypi.com/news/1gb-raspberry-pi-5-now-available-at-45-and-memory-driven-price-rises/\n - Mono's future production runs impacted by LPDDR4 memory pricing: https://www.youtube.com/watch?v=AyueVGLT7qI\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff", "The RAM Shortage Comes for Us All", "https://www.youtube.com/watch?v=9rbz0akyLyQ", "9rbz0akyLyQ", 270, false, "/downloads/JeffGeerling/2025-12-04 The RAM Shortage Comes for Us All/The RAM Shortage Comes for Us All [9rbz0akyLyQ].mkv", false, 7, ~U[2025-12-04 18:42:58Z]] 08:52:43.619 [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" = ?) [7] 08:52:43.619 [debug] QUERY OK source="media_items" db=0.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[2025-11-26 23:45:17Z], 7] 08:52:43.620 [debug] QUERY OK source="media_items" db=0.7ms idle=5.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["It finally works!\n\nBlog post with all the details (and how you can try it): https://www.jeffgeerling.com/blog/2025/nvidia-graphics-cards-work-on-pi-5-and-rockchip\n\nAnd here's the open driver PR I mentioned in the video: https://github.com/NVIDIA/open-gpu-kernel-modules/pull/972\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff", "Nvidia GPU on Raspberry Pi—it WORKS!", "ebd53eba-1b5a-4566-b898-b206705ed2ac", "https://www.youtube.com/watch?v=SPTYjF8qH0A", "SPTYjF8qH0A", false, 348, false, 7, "/downloads/JeffGeerling/2025-11-26 Nvidia GPU on Raspberry Pi—it WORKS!/Nvidia GPU on Raspberry Pi—it WORKS! [SPTYjF8qH0A].mkv", false, false, 7, [], 98, ~U[2025-11-26 23:45:17Z], ~U[2025-12-23 08:52:43Z], ~U[2025-12-23 08:52:43Z], "It finally works!\n\nBlog post with all the details (and how you can try it): https://www.jeffgeerling.com/blog/2025/nvidia-graphics-cards-work-on-pi-5-and-rockchip\n\nAnd here's the open driver PR I mentioned in the video: https://github.com/NVIDIA/open-gpu-kernel-modules/pull/972\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff", "Nvidia GPU on Raspberry Pi—it WORKS!", "https://www.youtube.com/watch?v=SPTYjF8qH0A", "SPTYjF8qH0A", 348, false, "/downloads/JeffGeerling/2025-11-26 Nvidia GPU on Raspberry Pi—it WORKS!/Nvidia GPU on Raspberry Pi—it WORKS! [SPTYjF8qH0A].mkv", false, 7, ~U[2025-11-26 23:45:17Z]] 08:52:43.621 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 08:52:43.622 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-11-21 15:01:47Z], 7] 08:52:43.623 [debug] QUERY OK source="media_items" db=0.8ms idle=3.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["It's a neat, portable Air Quality monitor, full of personality.\n\nBut is it worth $250?\n\nLinks to things I referenced in the video (some links are affiliate links):\n\n - Air Lab: https://networkedartifacts.com/airlab/\n - AirGradient One: https://www.airgradient.com/indoor/\n - Temtop M2000C 2nd Generation: https://amzn.to/3XGbpbs\n - CO2 study referenced in the video: https://pubmed.ncbi.nlm.nih.gov/23008272/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - A $250 portable air quality monitor\n01:14 - Versus AirGradient ONE\n02:06 - Setting up an AirGradient with Home Assistant\n05:36 - Setting up the Air Lab\n07:24 - Air Lab Console walkthrough\n11:28 - Stale air on a road trip\n13:02 - Air quality at an indoor convention\n13:40 - Battery life, Home Assistant integration\n14:05 - DIY or Buy\n15:18 - Bonus, the Temtop", "Are you sure that's air you're breathing?", "8200f90c-156c-4c5e-8b06-5d5b560b1f91", "https://www.youtube.com/watch?v=r21lvaw40nY", "r21lvaw40nY", false, 978, false, 8, "/downloads/JeffGeerling/2025-11-21 Are you sure that's air you're breathing?/Are you sure that's air you're breathing? [r21lvaw40nY].mkv", false, false, 7, [], 98, ~U[2025-11-21 15:01:47Z], ~U[2025-12-23 08:52:43Z], ~U[2025-12-23 08:52:43Z], "It's a neat, portable Air Quality monitor, full of personality.\n\nBut is it worth $250?\n\nLinks to things I referenced in the video (some links are affiliate links):\n\n - Air Lab: https://networkedartifacts.com/airlab/\n - AirGradient One: https://www.airgradient.com/indoor/\n - Temtop M2000C 2nd Generation: https://amzn.to/3XGbpbs\n - CO2 study referenced in the video: https://pubmed.ncbi.nlm.nih.gov/23008272/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - A $250 portable air quality monitor\n01:14 - Versus AirGradient ONE\n02:06 - Setting up an AirGradient with Home Assistant\n05:36 - Setting up the Air Lab\n07:24 - Air Lab Console walkthrough\n11:28 - Stale air on a road trip\n13:02 - Air quality at an indoor convention\n13:40 - Battery life, Home Assistant integration\n14:05 - DIY or Buy\n15:18 - Bonus, the Temtop", "Are you sure that's air you're breathing?", "https://www.youtube.com/watch?v=r21lvaw40nY", "r21lvaw40nY", 978, false, "/downloads/JeffGeerling/2025-11-21 Are you sure that's air you're breathing?/Are you sure that's air you're breathing? [r21lvaw40nY].mkv", false, 7, ~U[2025-11-21 15:01:47Z]] 08:52:43.624 [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" = ?) [7] 08:52:43.624 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-11-13 15:01:23Z], 7] 08:52:43.626 [debug] QUERY OK source="media_items" db=1.1ms idle=3.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["And you don't even have to recompile the Linux kernel!\n\nI purchased almost everything shown in this video, however, the Intel Arc Pro B50 was provided for testing by Intel, thus I'm marking this video as 'sponsored'. They did not pay me outside of providing the B50, nor did they have any say in the video's contents.\n\nThings mentioned in this video (some links are affiliate links):\n\n - Blog post with the latest guide for setup: https://www.jeffgeerling.com/blog/2025/all-intel-gpus-run-on-raspberry-pi-and-risc-v\n - Blog post on Resizeable BAR support: https://www.jeffgeerling.com/blog/2025/resizeable-bar-support-on-raspberry-pi\n - Minisforum DEG1 eGPU Dock: https://amzn.to/481EHao\n - JMT eGPU Dock: https://amzn.to/4oUZ4M9\n - chenyang OCuLink cable: https://amzn.to/47ZxWWF\n - Micro SATA Cables OCuLink to M.2 adapter with ReDriver: https://amzn.to/4nTtJse\n - Lian-Li 750W SFX PSU: https://amzn.to/3JG3Myv\n - Linux Kernel Mailing List patch for Intel on non-x86: https://lore.kernel.org/lkml/20250715061837.2144388-1-zhangzhijie@bosc.ac.cn/\n - Raspberry Pi OS Kernel PR for AMD and Intel GPUs: https://github.com/raspberrypi/linux/pull/7113\n - Full testing and results using the latest patches: https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/764\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Every Intel GPU\n00:51 - Physical connections and overcoming PCIe issues\n01:38 - You don't need to recompile Linux anymore\n03:09 - Black Mesa (the curse of the blinking cursor)\n03:55 - Resizeable BAR support\n04:27 - Performance: Vulkan, OpenGL, llama.cpp AI models\n05:26 - Compared to AMD\n05:56 - Partnering with RISC-V to go mainline", "Every Intel GPU runs on a Raspberry Pi", "b869384d-cb2e-4b45-9f0e-461f16b81621", "https://www.youtube.com/watch?v=ewDJpxQEGo4", "ewDJpxQEGo4", false, 410, false, 9, "/downloads/JeffGeerling/2025-11-13 Every Intel GPU runs on a Raspberry Pi/Every Intel GPU runs on a Raspberry Pi [ewDJpxQEGo4].mkv", false, false, 7, [], 98, ~U[2025-11-13 15:01:23Z], ~U[2025-12-23 08:52:43Z], ~U[2025-12-23 08:52:43Z], "And you don't even have to recompile the Linux kernel!\n\nI purchased almost everything shown in this video, however, the Intel Arc Pro B50 was provided for testing by Intel, thus I'm marking this video as 'sponsored'. They did not pay me outside of providing the B50, nor did they have any say in the video's contents.\n\nThings mentioned in this video (some links are affiliate links):\n\n - Blog post with the latest guide for setup: https://www.jeffgeerling.com/blog/2025/all-intel-gpus-run-on-raspberry-pi-and-risc-v\n - Blog post on Resizeable BAR support: https://www.jeffgeerling.com/blog/2025/resizeable-bar-support-on-raspberry-pi\n - Minisforum DEG1 eGPU Dock: https://amzn.to/481EHao\n - JMT eGPU Dock: https://amzn.to/4oUZ4M9\n - chenyang OCuLink cable: https://amzn.to/47ZxWWF\n - Micro SATA Cables OCuLink to M.2 adapter with ReDriver: https://amzn.to/4nTtJse\n - Lian-Li 750W SFX PSU: https://amzn.to/3JG3Myv\n - Linux Kernel Mailing List patch for Intel on non-x86: https://lore.kernel.org/lkml/20250715061837.2144388-1-zhangzhijie@bosc.ac.cn/\n - Raspberry Pi OS Kernel PR for AMD and Intel GPUs: https://github.com/raspberrypi/linux/pull/7113\n - Full testing and results using the latest patches: https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/764\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Every Intel GPU\n00:51 - Physical connections and overcoming PCIe issues\n01:38 - You don't need to recompile Linux anymore\n03:09 - Black Mesa (the curse of the blinking cursor)\n03:55 - Resizeable BAR support\n04:27 - Performance: Vulkan, OpenGL, llama.cpp AI models\n05:26 - Compared to AMD\n05:56 - Partnering with RISC-V to go mainline", "Every Intel GPU runs on a Raspberry Pi", "https://www.youtube.com/watch?v=ewDJpxQEGo4", "ewDJpxQEGo4", 410, false, "/downloads/JeffGeerling/2025-11-13 Every Intel GPU runs on a Raspberry Pi/Every Intel GPU runs on a Raspberry Pi [ewDJpxQEGo4].mkv", false, 7, ~U[2025-11-13 15:01:23Z]] 08:52:43.626 [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" = ?) [7] 08:52:43.627 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-11-10 16:00:53Z], 7] 08:52:43.632 [debug] QUERY OK source="media_items" db=4.3ms idle=3.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Minisforum just launched the MS-R1, their first Arm workstation PC.\n\nWill it bring Arm into the homelab, in a big way? Or will it suffer the same fate as the Radxa Orion O6, let down by a power-hungry SoC? And will a dedicated GPU fit inside this tiny box?\n\nThings mentioned in this video (amzn.to links are affiliate links):\n\n - Minisforum MS-R1: https://s.minisforum.com/4hRFZbj\n - MS-R1 benchmarks and test data: https://github.com/geerlingguy/sbc-reviews/issues/89\n - Radxa Orion O6 review: https://www.youtube.com/watch?v=OMnCqmM-WKo\n - Abovetop Nvidia RTX A2000 SFF GPU: https://www.newegg.com/abovetop-Model-A2000laptop/p/1DW-00MF-00001\n - Intel Arc A310 ECO GPU: https://amzn.to/49Q3vn4\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Hardware overview\n01:47 - Cix's 12-core Arm SoC\n02:57 - Deeper problems\n03:55 - 10 Gbps Networking and AI inference\n04:55 - Installing a dGPU (RTX A2000)\n06:15 - A BIOS detour and AC Power Loss bug\n06:50 - Trying an Intel GPU (A310 ECO)\n07:20 - Installing Ubuntu and getting GPU acceleration\n08:40 - Arm Homelab in a box?", "Arm Homelab-in-a-Box – Minisforum MS-R1", "e0cdba2a-e597-4ec5-b8b9-d92f97d46044", "https://www.youtube.com/watch?v=WXfd0rOOtkg", "WXfd0rOOtkg", false, 601, false, 10, "/downloads/JeffGeerling/2025-11-10 Arm Homelab-in-a-Box – Minisforum MS-R1/Arm Homelab-in-a-Box – Minisforum MS-R1 [WXfd0rOOtkg].mkv", false, false, 7, [], 98, ~U[2025-11-10 16:00:53Z], ~U[2025-12-23 08:52:43Z], ~U[2025-12-23 08:52:43Z], "Minisforum just launched the MS-R1, their first Arm workstation PC.\n\nWill it bring Arm into the homelab, in a big way? Or will it suffer the same fate as the Radxa Orion O6, let down by a power-hungry SoC? And will a dedicated GPU fit inside this tiny box?\n\nThings mentioned in this video (amzn.to links are affiliate links):\n\n - Minisforum MS-R1: https://s.minisforum.com/4hRFZbj\n - MS-R1 benchmarks and test data: https://github.com/geerlingguy/sbc-reviews/issues/89\n - Radxa Orion O6 review: https://www.youtube.com/watch?v=OMnCqmM-WKo\n - Abovetop Nvidia RTX A2000 SFF GPU: https://www.newegg.com/abovetop-Model-A2000laptop/p/1DW-00MF-00001\n - Intel Arc A310 ECO GPU: https://amzn.to/49Q3vn4\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Hardware overview\n01:47 - Cix's 12-core Arm SoC\n02:57 - Deeper problems\n03:55 - 10 Gbps Networking and AI inference\n04:55 - Installing a dGPU (RTX A2000)\n06:15 - A BIOS detour and AC Power Loss bug\n06:50 - Trying an Intel GPU (A310 ECO)\n07:20 - Installing Ubuntu and getting GPU acceleration\n08:40 - Arm Homelab in a box?", "Arm Homelab-in-a-Box – Minisforum MS-R1", "https://www.youtube.com/watch?v=WXfd0rOOtkg", "WXfd0rOOtkg", 601, false, "/downloads/JeffGeerling/2025-11-10 Arm Homelab-in-a-Box – Minisforum MS-R1/Arm Homelab-in-a-Box – Minisforum MS-R1 [WXfd0rOOtkg].mkv", false, 7, ~U[2025-11-10 16:00:53Z]] 08:52:43.632 [debug] QUERY OK source="sources" db=0.2ms idle=7.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:52:43.633 [debug] QUERY OK source="media_items" db=0.5ms idle=6.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-31 14:00:54Z], 7] 08:52:43.634 [debug] QUERY OK source="media_items" db=0.8ms idle=7.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Qualcomm and Arduino just launched the Uno Q, and it's... weird.\n\nArduino sent me a review unit to test, after I had already placed an order for a production unit. Both came in the same week, but I still like to disclose if any review equipment is sent for testing!\n\nMentioned in this video:\n\n - SBC Reviews - Uno Q: https://github.com/geerlingguy/sbc-reviews/issues/83\n - Arduino Uno Q: https://www.arduino.cc/product-uno-q\n - Radxa X4: https://radxa.com/products/x/x4/\n - Raspberry Pi 5: https://www.raspberrypi.com/products/raspberry-pi-5/\n - Arduino Yun: https://docs.arduino.cc/retired/boards/arduino-yun/\n - Electromaker video on Uno Q projects: https://www.youtube.com/watch?v=Zf99bvQbwf8\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - What is the Q?\n01:08 - Qualcomm Dragonwing and the App Lab\n01:51 - USB-C all the things\n02:55 - SBC Performance and efficiency\n03:57 - Compared to a Pi 5 and Radxa X4\n04:30 - Edge AI?\n05:28 - Qualcomm and Arduino and Open Source", "Arduino made a weird SBC", "6f377eac-c7a4-4c43-a44a-989ec95e8539", "https://www.youtube.com/watch?v=Vz3pD3_CDUE", "Vz3pD3_CDUE", false, 444, false, 11, "/downloads/JeffGeerling/2025-10-31 Arduino made a weird SBC/Arduino made a weird SBC [Vz3pD3_CDUE].mkv", false, false, 7, [], 98, ~U[2025-10-31 14:00:54Z], ~U[2025-12-23 08:52:43Z], ~U[2025-12-23 08:52:43Z], "Qualcomm and Arduino just launched the Uno Q, and it's... weird.\n\nArduino sent me a review unit to test, after I had already placed an order for a production unit. Both came in the same week, but I still like to disclose if any review equipment is sent for testing!\n\nMentioned in this video:\n\n - SBC Reviews - Uno Q: https://github.com/geerlingguy/sbc-reviews/issues/83\n - Arduino Uno Q: https://www.arduino.cc/product-uno-q\n - Radxa X4: https://radxa.com/products/x/x4/\n - Raspberry Pi 5: https://www.raspberrypi.com/products/raspberry-pi-5/\n - Arduino Yun: https://docs.arduino.cc/retired/boards/arduino-yun/\n - Electromaker video on Uno Q projects: https://www.youtube.com/watch?v=Zf99bvQbwf8\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - What is the Q?\n01:08 - Qualcomm Dragonwing and the App Lab\n01:51 - USB-C all the things\n02:55 - SBC Performance and efficiency\n03:57 - Compared to a Pi 5 and Radxa X4\n04:30 - Edge AI?\n05:28 - Qualcomm and Arduino and Open Source", "Arduino made a weird SBC", "https://www.youtube.com/watch?v=Vz3pD3_CDUE", "Vz3pD3_CDUE", 444, false, "/downloads/JeffGeerling/2025-10-31 Arduino made a weird SBC/Arduino made a weird SBC [Vz3pD3_CDUE].mkv", false, 7, ~U[2025-10-31 14:00:54Z]] 08:52:43.635 [debug] QUERY OK source="sources" db=0.2ms idle=7.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 08:52:43.635 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-10-16 14:01:14Z], 7] 08:52:43.722 [debug] QUERY OK source="media_items" db=85.6ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Vintage Computer Festival Midwest 2025 was overwhelming (in a good way).\n\nI'll tell you my favorite experiences and interactions with the vintage tech community in this video.\n\nSome of the projects and products mentioned in this video:\n\n - VCF Midwest: https://www.vcfmw.org\n - yyzkevin PCMCIA Pico card: https://www.yyzkevin.ca/pico-pcmcia/\n - Open Source CRT analog board: https://github.com/tdaede/td-crt\n - Meshtastic 64 on C64: https://64jim64.blogspot.com/2025/09/meshtastic-64-meshtastic-radio-for.html\n - Juicy Crumb Systems: https://juicycrumb.com\n - Mac84 Video on Personics View Control System: https://www.youtube.com/watch?v=41jCujsrHVg\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Old computers, new tricks in Chicago\n00:54 - Nostalgia for old Macs\n02:00 - The free pile, and Jeff is easily distracted\n02:47 - Open source CRT analog board replacement\n03:41 - An unexpected meeting at RCV's booth\n04:21 - Cursed input devices\n05:07 - Meshtastic on a C64\n05:54 - My timing sense tingled\n06:57 - Side quest - BlueSCSI disk rescue\n08:20 - Relay computers, 70 lb HDDs, and ESMs\n09:38 - Preventing e-waste, and analog DRM\n10:42 - The anti-AI", "We used to actually own our computers", "0a563b73-7cad-4d4e-99b5-fab31384e3bc", "https://www.youtube.com/watch?v=hF0NKvmQmVA", "hF0NKvmQmVA", false, 720, false, 12, "/downloads/JeffGeerling/2025-10-16 We used to actually own our computers/We used to actually own our computers [hF0NKvmQmVA].mkv", false, false, 7, [], 98, ~U[2025-10-16 14:01:14Z], ~U[2025-12-23 08:52:43Z], ~U[2025-12-23 08:52:43Z], "Vintage Computer Festival Midwest 2025 was overwhelming (in a good way).\n\nI'll tell you my favorite experiences and interactions with the vintage tech community in this video.\n\nSome of the projects and products mentioned in this video:\n\n - VCF Midwest: https://www.vcfmw.org\n - yyzkevin PCMCIA Pico card: https://www.yyzkevin.ca/pico-pcmcia/\n - Open Source CRT analog board: https://github.com/tdaede/td-crt\n - Meshtastic 64 on C64: https://64jim64.blogspot.com/2025/09/meshtastic-64-meshtastic-radio-for.html\n - Juicy Crumb Systems: https://juicycrumb.com\n - Mac84 Video on Personics View Control System: https://www.youtube.com/watch?v=41jCujsrHVg\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Old computers, new tricks in Chicago\n00:54 - Nostalgia for old Macs\n02:00 - The free pile, and Jeff is easily distracted\n02:47 - Open source CRT analog board replacement\n03:41 - An unexpected meeting at RCV's booth\n04:21 - Cursed input devices\n05:07 - Meshtastic on a C64\n05:54 - My timing sense tingled\n06:57 - Side quest - BlueSCSI disk rescue\n08:20 - Relay computers, 70 lb HDDs, and ESMs\n09:38 - Preventing e-waste, and analog DRM\n10:42 - The anti-AI", "We used to actually own our computers", "https://www.youtube.com/watch?v=hF0NKvmQmVA", "hF0NKvmQmVA", 720, false, "/downloads/JeffGeerling/2025-10-16 We used to actually own our computers/We used to actually own our computers [hF0NKvmQmVA].mkv", false, 7, ~U[2025-10-16 14:01:14Z]] 08:52:43.722 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=87.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:52:43.723 [debug] QUERY OK source="media_items" db=0.6ms idle=87.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-07 13:00:32Z], 7] 08:52:43.993 [debug] QUERY OK source="media_items" db=269.1ms idle=87.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Who saw THIS coming? Qualcomm just announced their intent to acquire Arduino. And they're making a new SBC, the Uno Q!\n\nLearn more in this video, and read their official press release for more info: https://www.qualcomm.com/news/releases/2025/10/qualcomm-to-acquire-arduino-accelerating-developers--access-to-i\n\nSome things I mentioned in this video:\n\n - Arduino Uno Q: https://www.arduino.cc/product-uno-q\n - Arduino Uno R3: https://amzn.to/3WpYx8J\n - Arduino Uno R4 WiFi: https://amzn.to/4nZr9RW\n - My first Arduino blinky repo: https://github.com/geerlingguy/blinky\n - Polanduino: https://github.com/mfolejewski/Polanduino\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Qualcomm acquires Arduino\n01:09 - Why does Qualcomm want Arduino?\n02:12 - A new joint SBC: Arduino Uno Q\n02:52 - Two big questions\n03:50 - Still open source?\n04:44 - The value of their first SBC", "Qualcomm just bought Arduino, and they're making a tiny computer", "f22420be-757e-4e55-968d-c3555dfb1f5c", "https://www.youtube.com/watch?v=CfKX616-nsE", "CfKX616-nsE", false, 337, false, 13, "/downloads/JeffGeerling/2025-10-07 Qualcomm just bought Arduino, and they're making a tiny computer/Qualcomm just bought Arduino, and they're making a tiny computer [CfKX616-nsE].mkv", false, false, 7, [], 98, ~U[2025-10-07 13:00:32Z], ~U[2025-12-23 08:52:43Z], ~U[2025-12-23 08:52:43Z], "Who saw THIS coming? Qualcomm just announced their intent to acquire Arduino. And they're making a new SBC, the Uno Q!\n\nLearn more in this video, and read their official press release for more info: https://www.qualcomm.com/news/releases/2025/10/qualcomm-to-acquire-arduino-accelerating-developers--access-to-i\n\nSome things I mentioned in this video:\n\n - Arduino Uno Q: https://www.arduino.cc/product-uno-q\n - Arduino Uno R3: https://amzn.to/3WpYx8J\n - Arduino Uno R4 WiFi: https://amzn.to/4nZr9RW\n - My first Arduino blinky repo: https://github.com/geerlingguy/blinky\n - Polanduino: https://github.com/mfolejewski/Polanduino\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Qualcomm acquires Arduino\n01:09 - Why does Qualcomm want Arduino?\n02:12 - A new joint SBC: Arduino Uno Q\n02:52 - Two big questions\n03:50 - Still open source?\n04:44 - The value of their first SBC", "Qualcomm just bought Arduino, and they're making a tiny computer", "https://www.youtube.com/watch?v=CfKX616-nsE", "CfKX616-nsE", 337, false, "/downloads/JeffGeerling/2025-10-07 Qualcomm just bought Arduino, and they're making a tiny computer/Qualcomm just bought Arduino, and they're making a tiny computer [CfKX616-nsE].mkv", false, 7, ~U[2025-10-07 13:00:32Z]] 08:52:43.993 [debug] QUERY OK source="sources" db=0.2ms idle=271.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] 08:52:43.994 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=271.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-25 07:00:24Z], 7] 08:52:43.996 [debug] QUERY OK source="media_items" db=1.1ms idle=272.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Raspberry Pi 500+ adds on things missing from the regular 500. But at what cost?\n\nAnd with full RGB... is it any better at gaming? What if we throw in an eGPU?\n\nMentioned in this video:\n\n - Raspberry Pi 500+: https://www.raspberrypi.com/products/raspberry-pi-500-plus/\n - Raspberry Pi Monitor: https://www.raspberrypi.com/products/raspberry-pi-monitor/\n - Lumafield scans:\n - Pi 500+ 'top' (right side): https://voyager.lumafield.com/project/79ccb3a4-21a0-40eb-ba95-21057900883f\n - Pi 500+ 'bottom' (left side): https://voyager.lumafield.com/project/0506155d-2d8f-4a49-832b-104d215999c9\n - ZX Spectrum Video by Adrian's Digital Basement: https://www.youtube.com/watch?v=RMG_StQ67kA\n\nAnd here are all the parts I used in testing the Pi 500+ (some links are affiliate links):\n\n - RIITOP NVMe to USB Docking Station: https://amzn.to/46yvPaC\n - JMT M.2 M-Key to OCuLink PCIe Dock: https://amzn.to/4pCCokS\n - chenyang SFF-8611 OCuLink Cable: https://amzn.to/481Otdn\n - Lian Li 750W SFX Power Supply: https://amzn.to/3Ied0kV\n - AVerMedia GC513 Live Gamer external Capture Card: https://amzn.to/3Vyz78C\n - Mechanical keyboard key cap puller: https://amzn.to/3KiuJZ0\n - dagaladoo Low Profile PBT Keycaps: https://amzn.to/3KjOCyX\n - KBDiy 9009 Doys Low Profile PBT Keycaps: https://amzn.to/4mulpyJ\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Mechanical keyboard, NVMe, 16 GB RAM, $200\n01:57 - Performance\n02:52 - Looking inside with Lumafield CT scans\n04:36 - Cracking the case\n05:20 - Oculink and eGPU Docks\n11:02 - AMD RX 7900 XT on a Pi 500+\n12:27 - We're gaming! And private LLM'ing!\n13:53 - How's the keyboard?\n14:49 - Alternate keycaps and mechanical keyboarding\n18:31 - Keyboard configuration, RGB, and an easter egg\n19:55 - Is it worth $110 more?", "Raspberry Pi 500+: NOW we're gaming!", "5f8814be-0852-4de2-8475-610abdc58df0", "https://www.youtube.com/watch?v=Dv3RRAx7G6E", "Dv3RRAx7G6E", false, 1255, false, 14, "/downloads/JeffGeerling/2025-09-25 Raspberry Pi 500+: NOW we're gaming!/Raspberry Pi 500+: NOW we're gaming! [Dv3RRAx7G6E].mkv", false, false, 7, [], 98, ~U[2025-09-25 07:00:24Z], ~U[2025-12-23 08:52:43Z], ~U[2025-12-23 08:52:43Z], "The Raspberry Pi 500+ adds on things missing from the regular 500. But at what cost?\n\nAnd with full RGB... is it any better at gaming? What if we throw in an eGPU?\n\nMentioned in this video:\n\n - Raspberry Pi 500+: https://www.raspberrypi.com/products/raspberry-pi-500-plus/\n - Raspberry Pi Monitor: https://www.raspberrypi.com/products/raspberry-pi-monitor/\n - Lumafield scans:\n - Pi 500+ 'top' (right side): https://voyager.lumafield.com/project/79ccb3a4-21a0-40eb-ba95-21057900883f\n - Pi 500+ 'bottom' (left side): https://voyager.lumafield.com/project/0506155d-2d8f-4a49-832b-104d215999c9\n - ZX Spectrum Video by Adrian's Digital Basement: https://www.youtube.com/watch?v=RMG_StQ67kA\n\nAnd here are all the parts I used in testing the Pi 500+ (some links are affiliate links):\n\n - RIITOP NVMe to USB Docking Station: https://amzn.to/46yvPaC\n - JMT M.2 M-Key to OCuLink PCIe Dock: https://amzn.to/4pCCokS\n - chenyang SFF-8611 OCuLink Cable: https://amzn.to/481Otdn\n - Lian Li 750W SFX Power Supply: https://amzn.to/3Ied0kV\n - AVerMedia GC513 Live Gamer external Capture Card: https://amzn.to/3Vyz78C\n - Mechanical keyboard key cap puller: https://amzn.to/3KiuJZ0\n - dagaladoo Low Profile PBT Keycaps: https://amzn.to/3KjOCyX\n - KBDiy 9009 Doys Low Profile PBT Keycaps: https://amzn.to/4mulpyJ\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Mechanical keyboard, NVMe, 16 GB RAM, $200\n01:57 - Performance\n02:52 - Looking inside with Lumafield CT scans\n04:36 - Cracking the case\n05:20 - Oculink and eGPU Docks\n11:02 - AMD RX 7900 XT on a Pi 500+\n12:27 - We're gaming! And private LLM'ing!\n13:53 - How's the keyboard?\n14:49 - Alternate keycaps and mechanical keyboarding\n18:31 - Keyboard configuration, RGB, and an easter egg\n19:55 - Is it worth $110 more?", "Raspberry Pi 500+: NOW we're gaming!", "https://www.youtube.com/watch?v=Dv3RRAx7G6E", "Dv3RRAx7G6E", 1255, false, "/downloads/JeffGeerling/2025-09-25 Raspberry Pi 500+: NOW we're gaming!/Raspberry Pi 500+: NOW we're gaming! [Dv3RRAx7G6E].mkv", false, 7, ~U[2025-09-25 07:00:24Z]] 08:52:43.996 [debug] QUERY OK source="sources" db=0.2ms idle=272.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:52:43.997 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-09-19 14:00:14Z], 7] 08:52:43.999 [debug] QUERY OK source="media_items" db=1.1ms idle=3.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["It's been a while. Some Kickstarters take time.\n\nWhat do you think about doing the same thing 10 times in a row, over and over? If that's your jam, build a cluster like I did in this video!\n\nIf you want to replicate the Compute Blade Cluster, here are all the parts I used (some links are affiliate links):\n\n - Compute Blade DEV: https://www.pishop.us/product/compute-blade-dev/\n - Compute Blade Standard Fan Unit: https://www.pishop.us/product/fansta-1v1-0/\n - Compute Blade 10\" 3D Print Rackmount: https://github.com/Uptime-Lab/compute-blade/tree/main/models/bladerunner\n - Raspberry Pi CM5 16GB (CM5016000): https://www.pishop.us/product/raspberry-pi-compute-module-5-16gb-ram-lite-cm5016000/\n - GLOTRENDS Aluminum CM5 Heatsink: https://amzn.to/45YACBV\n - Patriot P300 256GB NVMe SSD 10-pack: https://amzn.to/4lPJ0JC\n - GigaPlus 2.5 Gbps 10 port PoE+ switch: https://amzn.to/3UNOwSd\n - GigaPlus 10\" Rack Mount 3D Print ears: https://www.printables.com/model/1215585-unified-10-rack-gigaplus-switch-mounting-ears\n - Monoprice Cat6A SlimRun 6\" Cat6 patch cables (10 pack): https://amzn.to/4fX1gzr\n - ioplex SFP+ Twinax DAC patch cable: https://amzn.to/47UlPKX\n - DeskPi RackMate TT: https://amzn.to/3UUjCHP\n\nOther resources mentioned in the video:\n\n - My older Compute Blade video: https://www.youtube.com/watch?v=rKDGlpnP-vE\n - Xerxes Pi Kickstarter: https://www.kickstarter.com/projects/1907647187/small-board-big-possibilities-xerxes-pi\n - Xerxes Pi testing: https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/753\n - Unredacted Labs' Tor exit cluster: https://unredacted.org/blog/2025/05/unredacted-labs/\n - World's Largest Pi Cluster at UC Santa Barbara: https://www.independent.com/2025/04/29/worlds-biggest-raspberry-pi-cluster-is-now-at-uc-santa-barbara/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - 2 years 2 long\n00:32 - Another blade\n01:30 - Unboxing a cluster\n03:06 - Assembling one of 10\n06:11 - A bandolier of microSD cards\n07:16 - Assembling blades 2-10\n08:16 - Next steps - fans and storage\n10:17 - Flashing NVMe drives\n11:00 - Only Fan Units\n12:45 - They all just... disappeared\n14:33 - Spending another $200\n15:45 - Cluster benchmarks: HPL\n16:23 - Spending another $70\n17:03 - Framework cluster vs Pi cluster\n18:12 - AI clustering (down one node)\n19:26 - llama.cpp is totally RPC\n20:54 - Exo and Distributed Llama\n22:09 - Blade (the movie) vs blade (the compute)", "I regret building a $3000 Pi AI Cluster", "d1cbb4f8-6545-4591-afe0-c22150f4dc96", "https://www.youtube.com/watch?v=8SiB-bNyP5E", "8SiB-bNyP5E", false, 1429, false, 15, "/downloads/JeffGeerling/2025-09-19 I regret building a $3000 Pi AI Cluster/I regret building a $3000 Pi AI Cluster [8SiB-bNyP5E].mkv", false, false, 7, [], 98, ~U[2025-09-19 14:00:14Z], ~U[2025-12-23 08:52:43Z], ~U[2025-12-23 08:52:43Z], "It's been a while. Some Kickstarters take time.\n\nWhat do you think about doing the same thing 10 times in a row, over and over? If that's your jam, build a cluster like I did in this video!\n\nIf you want to replicate the Compute Blade Cluster, here are all the parts I used (some links are affiliate links):\n\n - Compute Blade DEV: https://www.pishop.us/product/compute-blade-dev/\n - Compute Blade Standard Fan Unit: https://www.pishop.us/product/fansta-1v1-0/\n - Compute Blade 10\" 3D Print Rackmount: https://github.com/Uptime-Lab/compute-blade/tree/main/models/bladerunner\n - Raspberry Pi CM5 16GB (CM5016000): https://www.pishop.us/product/raspberry-pi-compute-module-5-16gb-ram-lite-cm5016000/\n - GLOTRENDS Aluminum CM5 Heatsink: https://amzn.to/45YACBV\n - Patriot P300 256GB NVMe SSD 10-pack: https://amzn.to/4lPJ0JC\n - GigaPlus 2.5 Gbps 10 port PoE+ switch: https://amzn.to/3UNOwSd\n - GigaPlus 10\" Rack Mount 3D Print ears: https://www.printables.com/model/1215585-unified-10-rack-gigaplus-switch-mounting-ears\n - Monoprice Cat6A SlimRun 6\" Cat6 patch cables (10 pack): https://amzn.to/4fX1gzr\n - ioplex SFP+ Twinax DAC patch cable: https://amzn.to/47UlPKX\n - DeskPi RackMate TT: https://amzn.to/3UUjCHP\n\nOther resources mentioned in the video:\n\n - My older Compute Blade video: https://www.youtube.com/watch?v=rKDGlpnP-vE\n - Xerxes Pi Kickstarter: https://www.kickstarter.com/projects/1907647187/small-board-big-possibilities-xerxes-pi\n - Xerxes Pi testing: https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/753\n - Unredacted Labs' Tor exit cluster: https://unredacted.org/blog/2025/05/unredacted-labs/\n - World's Largest Pi Cluster at UC Santa Barbara: https://www.independent.com/2025/04/29/worlds-biggest-raspberry-pi-cluster-is-now-at-uc-santa-barbara/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - 2 years 2 long\n00:32 - Another blade\n01:30 - Unboxing a cluster\n03:06 - Assembling one of 10\n06:11 - A bandolier of microSD cards\n07:16 - Assembling blades 2-10\n08:16 - Next steps - fans and storage\n10:17 - Flashing NVMe drives\n11:00 - Only Fan Units\n12:45 - They all just... disappeared\n14:33 - Spending another $200\n15:45 - Cluster benchmarks: HPL\n16:23 - Spending another $70\n17:03 - Framework cluster vs Pi cluster\n18:12 - AI clustering (down one node)\n19:26 - llama.cpp is totally RPC\n20:54 - Exo and Distributed Llama\n22:09 - Blade (the movie) vs blade (the compute)", "I regret building a $3000 Pi AI Cluster", "https://www.youtube.com/watch?v=8SiB-bNyP5E", "8SiB-bNyP5E", 1429, false, "/downloads/JeffGeerling/2025-09-19 I regret building a $3000 Pi AI Cluster/I regret building a $3000 Pi AI Cluster [8SiB-bNyP5E].mkv", false, 7, ~U[2025-09-19 14:00:14Z]] 08:52:43.999 [debug] QUERY OK source="sources" db=0.2ms idle=4.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 08:52:44.000 [debug] QUERY OK source="media_items" db=0.6ms 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[2025-09-12 14:01:24Z], 7] 08:52:44.002 [debug] QUERY OK source="media_items" db=1.1ms idle=3.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The number of Raspberry Pis orbiting the earth is about to increase.\n\nThanks to everyone who helped me make this video, over the past year! I learned a LOT (especially how much I don't know) about CubeSats, Ground Stations, amateur radio for space, and more.\n\nMentioned in this video:\n\n - SilverSat: https://silversat.org\n - Build a CubeSat: https://www.youtube.com/@buildacubesat\n - CubeSat TEMPEST: https://ethoslabs.space\n - Tim Fowler's CubeSat Collection on Level 2 Jeff: https://www.youtube.com/watch?v=woO0w92YuC0\n - Saveitforparts: https://www.youtube.com/@saveitforparts\n - RASCube: https://www.robinson-aerospace.com\n - MySat: https://www.mysatkit.com\n - GASPACS: https://artsci.usu.edu/physics/gas/projects/gaspacs\n - Mark Rober's SatGus: https://space.crunchlabs.com\n - Astro Pi: https://astro-pi.org\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Pis in Space!\n01:14 - CubeSat 101\n04:08 - Engineering challenges\n06:48 - MySat\n07:47 - RASCube\n08:43 - Build a CubeSat\n09:16 - CubeSat T.E.M.P.E.S.T.\n11:04 - SilverSat\n12:27 - Dave and Leticia\n15:10 - CubeSat Launch Initiative\n17:09 - The mission is just beginning\n18:14 - Why Raspberry Pi?\n19:49 - Pi security on orbit\n21:12 - Radio communications\n22:42 - Tracking sats from Earth with saveitforparts\n26:16 - What frequency?", "PIS IN SPACE!", "f88c9f14-bdf0-4222-ac47-81deac040869", "https://www.youtube.com/watch?v=qvN3sE2Nv4U", "qvN3sE2Nv4U", false, 1703, false, 16, "/downloads/JeffGeerling/2025-09-12 PIS IN SPACE!/PIS IN SPACE! [qvN3sE2Nv4U].mkv", false, false, 7, [], 98, ~U[2025-09-12 14:01:24Z], ~U[2025-12-23 08:52:44Z], ~U[2025-12-23 08:52:44Z], "The number of Raspberry Pis orbiting the earth is about to increase.\n\nThanks to everyone who helped me make this video, over the past year! I learned a LOT (especially how much I don't know) about CubeSats, Ground Stations, amateur radio for space, and more.\n\nMentioned in this video:\n\n - SilverSat: https://silversat.org\n - Build a CubeSat: https://www.youtube.com/@buildacubesat\n - CubeSat TEMPEST: https://ethoslabs.space\n - Tim Fowler's CubeSat Collection on Level 2 Jeff: https://www.youtube.com/watch?v=woO0w92YuC0\n - Saveitforparts: https://www.youtube.com/@saveitforparts\n - RASCube: https://www.robinson-aerospace.com\n - MySat: https://www.mysatkit.com\n - GASPACS: https://artsci.usu.edu/physics/gas/projects/gaspacs\n - Mark Rober's SatGus: https://space.crunchlabs.com\n - Astro Pi: https://astro-pi.org\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Pis in Space!\n01:14 - CubeSat 101\n04:08 - Engineering challenges\n06:48 - MySat\n07:47 - RASCube\n08:43 - Build a CubeSat\n09:16 - CubeSat T.E.M.P.E.S.T.\n11:04 - SilverSat\n12:27 - Dave and Leticia\n15:10 - CubeSat Launch Initiative\n17:09 - The mission is just beginning\n18:14 - Why Raspberry Pi?\n19:49 - Pi security on orbit\n21:12 - Radio communications\n22:42 - Tracking sats from Earth with saveitforparts\n26:16 - What frequency?", "PIS IN SPACE!", "https://www.youtube.com/watch?v=qvN3sE2Nv4U", "qvN3sE2Nv4U", 1703, false, "/downloads/JeffGeerling/2025-09-12 PIS IN SPACE!/PIS IN SPACE! [qvN3sE2Nv4U].mkv", false, 7, ~U[2025-09-12 14:01:24Z]] 08:52:44.002 [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" = ?) [7] 08:52:44.003 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-09-04 14:01:11Z], 7] 08:52:44.004 [debug] QUERY OK source="media_items" db=0.9ms idle=3.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["I'm just a guy who drives a car.\n\nMentioned in this video:\n\n - Electric Car GitHub repo: https://github.com/geerlingguy/electric-car\n - Level 1 J1772 charger (Lectron): https://amzn.to/3HIt2Tx\n - Level 2 J1772 charger (Grizzl-E): https://amzn.to/4k0tHwX\n - Level 3 CCS1 to CHAdeMO adapter (A2Z): https://a2zevshop.com/products/ccs1-to-chademo\n - LeLink 2 OBD-II BLE dongle: https://amzn.to/45GYUls\n - LeafSpy Pro App: https://leafspy.com/\n - CarlinKit 5.0 Wireless CarPlay/Android Auto adapter: https://amzn.to/3SW9AVH\n - VIOFO A119 Mini Dashcam: https://amzn.to/4n8HqEB\n - Dongar wiring harness adapter (for dashcam): https://amzn.to/44hbi9f\n - Technology Connections video on car chargers: https://www.youtube.com/watch?v=W96a8svXo14\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - The cheapest used EV\n01:49 - Range anxiety, off the lot\n02:37 - Fixing problems on my new old car\n04:39 - Charging was more confusing than I expected\n06:42 - Modern car design frustrations\n09:01 - An embarassing car wash\n11:06 - Batteries and CHAdeMO cost me $1000\n14:00 - Range anxiety is overrated (mostly)\n15:06 - Things I love: one-pedal driving\n17:06 - Buttons are good!\n18:28 - Maintenance and tire wear\n19:29 - Cheap EV, not cheap car\n20:10 - Range anxiety is real\n21:52 - Fast charging is harder than gas/petrol\n25:35 - Fit for me, maybe not for thee", "Do I regret buying the cheapest EV?", "47f85189-2c60-40d8-8af2-11fb4a68abc6", "https://www.youtube.com/watch?v=hQQtFnLefqw", "hQQtFnLefqw", false, 1555, false, 17, "/downloads/JeffGeerling/2025-09-04 Do I regret buying the cheapest EV?/Do I regret buying the cheapest EV? [hQQtFnLefqw].mkv", false, false, 7, [], 98, ~U[2025-09-04 14:01:11Z], ~U[2025-12-23 08:52:44Z], ~U[2025-12-23 08:52:44Z], "I'm just a guy who drives a car.\n\nMentioned in this video:\n\n - Electric Car GitHub repo: https://github.com/geerlingguy/electric-car\n - Level 1 J1772 charger (Lectron): https://amzn.to/3HIt2Tx\n - Level 2 J1772 charger (Grizzl-E): https://amzn.to/4k0tHwX\n - Level 3 CCS1 to CHAdeMO adapter (A2Z): https://a2zevshop.com/products/ccs1-to-chademo\n - LeLink 2 OBD-II BLE dongle: https://amzn.to/45GYUls\n - LeafSpy Pro App: https://leafspy.com/\n - CarlinKit 5.0 Wireless CarPlay/Android Auto adapter: https://amzn.to/3SW9AVH\n - VIOFO A119 Mini Dashcam: https://amzn.to/4n8HqEB\n - Dongar wiring harness adapter (for dashcam): https://amzn.to/44hbi9f\n - Technology Connections video on car chargers: https://www.youtube.com/watch?v=W96a8svXo14\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - The cheapest used EV\n01:49 - Range anxiety, off the lot\n02:37 - Fixing problems on my new old car\n04:39 - Charging was more confusing than I expected\n06:42 - Modern car design frustrations\n09:01 - An embarassing car wash\n11:06 - Batteries and CHAdeMO cost me $1000\n14:00 - Range anxiety is overrated (mostly)\n15:06 - Things I love: one-pedal driving\n17:06 - Buttons are good!\n18:28 - Maintenance and tire wear\n19:29 - Cheap EV, not cheap car\n20:10 - Range anxiety is real\n21:52 - Fast charging is harder than gas/petrol\n25:35 - Fit for me, maybe not for thee", "Do I regret buying the cheapest EV?", "https://www.youtube.com/watch?v=hQQtFnLefqw", "hQQtFnLefqw", 1555, false, "/downloads/JeffGeerling/2025-09-04 Do I regret buying the cheapest EV?/Do I regret buying the cheapest EV? [hQQtFnLefqw].mkv", false, 7, ~U[2025-09-04 14:01:11Z]] 08:52:44.004 [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" = ?) [7] 08:52:44.005 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-08-28 14:01:00Z], 7] 08:52:44.007 [debug] QUERY OK source="media_items" db=0.9ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Finally, TrueNAS runs on a Raspberry Pi—or any other Arm server with UEFI support!\n\nFULL instructions here: https://www.jeffgeerling.com/blog/2025/how-install-truenas-on-raspberry-pi\n\nMentioned in this video:\n\n - Joel0's TrueNAS on Arm thread: https://forums.truenas.com/t/truenas-on-arm-now-available/49160\n - Links to all the TrueNAS on Arm resources: https://github.com/joel0-truenas/truenas-on-arm/issues/5\n - My arm-nas GitHub project: https://github.com/geerlingguy/arm-nas\n - HL15 Arm ZFS server: https://www.youtube.com/watch?v=Hz5k5WgTkcc\n - Raspberry Pi SATA ZFS server: https://www.youtube.com/watch?v=l30sADfDiM8\n - Homelabs Pi Storage NAS project: https://homepinas.com/en/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nThe Homelabs Pi Server was sent to me by a member of Homelabs Club for testing, and following my typical policy, I am thus marking this video as 'sponsored'. No money exchanged hands, and nobody had any say in the content of this video besides me.\n\nContents:\n\n00:00 - TrueNAS comes to Arm\n01:21 - The UEFI problem\n02:03 - Adding UEFI to Raspberry Pi\n03:24 - Install TrueNAS on Pi\n05:34 - Real-world Pi NAS - HomePiNAS\n06:17 - ZFS on Pi NAS\n06:50 - Should you do it?", "TrueNAS on a custom Raspberry Pi NAS", "7bdbd1ad-937d-436d-b857-65e07b31fe98", "https://www.youtube.com/watch?v=XvaXemGDSpk", "XvaXemGDSpk", false, 438, false, 18, "/downloads/JeffGeerling/2025-08-28 TrueNAS on a custom Raspberry Pi NAS/TrueNAS on a custom Raspberry Pi NAS [XvaXemGDSpk].mkv", false, false, 7, [], 98, ~U[2025-08-28 14:01:00Z], ~U[2025-12-23 08:52:44Z], ~U[2025-12-23 08:52:44Z], "Finally, TrueNAS runs on a Raspberry Pi—or any other Arm server with UEFI support!\n\nFULL instructions here: https://www.jeffgeerling.com/blog/2025/how-install-truenas-on-raspberry-pi\n\nMentioned in this video:\n\n - Joel0's TrueNAS on Arm thread: https://forums.truenas.com/t/truenas-on-arm-now-available/49160\n - Links to all the TrueNAS on Arm resources: https://github.com/joel0-truenas/truenas-on-arm/issues/5\n - My arm-nas GitHub project: https://github.com/geerlingguy/arm-nas\n - HL15 Arm ZFS server: https://www.youtube.com/watch?v=Hz5k5WgTkcc\n - Raspberry Pi SATA ZFS server: https://www.youtube.com/watch?v=l30sADfDiM8\n - Homelabs Pi Storage NAS project: https://homepinas.com/en/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nThe Homelabs Pi Server was sent to me by a member of Homelabs Club for testing, and following my typical policy, I am thus marking this video as 'sponsored'. No money exchanged hands, and nobody had any say in the content of this video besides me.\n\nContents:\n\n00:00 - TrueNAS comes to Arm\n01:21 - The UEFI problem\n02:03 - Adding UEFI to Raspberry Pi\n03:24 - Install TrueNAS on Pi\n05:34 - Real-world Pi NAS - HomePiNAS\n06:17 - ZFS on Pi NAS\n06:50 - Should you do it?", "TrueNAS on a custom Raspberry Pi NAS", "https://www.youtube.com/watch?v=XvaXemGDSpk", "XvaXemGDSpk", 438, false, "/downloads/JeffGeerling/2025-08-28 TrueNAS on a custom Raspberry Pi NAS/TrueNAS on a custom Raspberry Pi NAS [XvaXemGDSpk].mkv", false, 7, ~U[2025-08-28 14:01:00Z]] 08:52:44.007 [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" = ?) [7] 08:52:44.008 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-08-22 14:00:18Z], 7] 08:52:44.009 [debug] QUERY OK source="media_items" db=1.0ms idle=3.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Taking it apart is usually a better option than turning it on.\n\nTrack all the work I'm doing on Retro Macs: https://github.com/geerlingguy/retro-computers\n\nAlso check out Infinite Mac—you can enjoy retro Mac software in the comfort of your browser, and not have to restore a 35 year old Mac like I did! https://infinitemac.org/\n\nParts list:\n\n - Console5 - Analog board (630-0395) caps: https://console5.com/store/macintosh-classic-analog-pcb-cap-kit.html\n - Console5 - Logic board tantalum caps: https://console5.com/store/macintosh-classic-smd-tantalum-main-pcb-cap-kit.html\n - Mac Memories - 2x 1MB SIMMs: https://www.ebay.com/itm/144565895077\n - MacBatt Internal CR2032 PRAM replacement: https://www.tindie.com/products/jurassicomp/macbatt-internal-cr2032-pram-macintosh-battery/\n\nSome videos referenced in this video:\n\n - Mac84 - Repairing a Sad Quadra 840AV: https://www.youtube.com/watch?v=LBgr5mdimRY\n - Peter Cetinski - RIFA AC Cap Blowup: https://www.youtube.com/watch?v=njbwdbcfXjc\n - iiiDIY Recapping 20th Anniversary Mac: https://youtu.be/mabH-YB6kn4?t=683\n\nMusic in this video by LOOK MUM NO COMPUTER: https://www.youtube.com/watch?v=M47dXmZUnBc\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://redshirtjeff.com\n2nd Channel: https://www.youtube.com/c/GeerlingEngineering\n\nContents:\n\n00:00 - Long screwdrivers and old computer problems\n03:18 - Tools of the trade\n05:09 - Cracking open the Mac\n07:41 - Breaking the anode, safely\n09:36 - Logic board removal\n11:06 - Analog board and CRT neck board removal\n12:50 - Recapping the Analog board\n18:08 - Recapping the Logic board\n21:29 - Tantalum caps, MacBatt, and 4 MB RAM upgrade\n23:02 - Re-assembling the Classic\n23:51 - First power\n25:53 - Computing like it's 1991\n28:45 - Revealing the build, reliving the memories\n30:41 - More Macs?", "Try not to kill yourself saving an old Macintosh", "b54d02c9-20c9-4e94-92eb-500da220c86a", "https://www.youtube.com/watch?v=779nru5udpQ", "779nru5udpQ", false, 1887, false, 19, "/downloads/JeffGeerling/2025-08-22 Try not to kill yourself saving an old Macintosh/Try not to kill yourself saving an old Macintosh [779nru5udpQ].mkv", false, false, 7, [], 97, ~U[2025-08-22 14:00:18Z], ~U[2025-12-23 08:52:44Z], ~U[2025-12-23 08:52:44Z], "Taking it apart is usually a better option than turning it on.\n\nTrack all the work I'm doing on Retro Macs: https://github.com/geerlingguy/retro-computers\n\nAlso check out Infinite Mac—you can enjoy retro Mac software in the comfort of your browser, and not have to restore a 35 year old Mac like I did! https://infinitemac.org/\n\nParts list:\n\n - Console5 - Analog board (630-0395) caps: https://console5.com/store/macintosh-classic-analog-pcb-cap-kit.html\n - Console5 - Logic board tantalum caps: https://console5.com/store/macintosh-classic-smd-tantalum-main-pcb-cap-kit.html\n - Mac Memories - 2x 1MB SIMMs: https://www.ebay.com/itm/144565895077\n - MacBatt Internal CR2032 PRAM replacement: https://www.tindie.com/products/jurassicomp/macbatt-internal-cr2032-pram-macintosh-battery/\n\nSome videos referenced in this video:\n\n - Mac84 - Repairing a Sad Quadra 840AV: https://www.youtube.com/watch?v=LBgr5mdimRY\n - Peter Cetinski - RIFA AC Cap Blowup: https://www.youtube.com/watch?v=njbwdbcfXjc\n - iiiDIY Recapping 20th Anniversary Mac: https://youtu.be/mabH-YB6kn4?t=683\n\nMusic in this video by LOOK MUM NO COMPUTER: https://www.youtube.com/watch?v=M47dXmZUnBc\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://redshirtjeff.com\n2nd Channel: https://www.youtube.com/c/GeerlingEngineering\n\nContents:\n\n00:00 - Long screwdrivers and old computer problems\n03:18 - Tools of the trade\n05:09 - Cracking open the Mac\n07:41 - Breaking the anode, safely\n09:36 - Logic board removal\n11:06 - Analog board and CRT neck board removal\n12:50 - Recapping the Analog board\n18:08 - Recapping the Logic board\n21:29 - Tantalum caps, MacBatt, and 4 MB RAM upgrade\n23:02 - Re-assembling the Classic\n23:51 - First power\n25:53 - Computing like it's 1991\n28:45 - Revealing the build, reliving the memories\n30:41 - More Macs?", "Try not to kill yourself saving an old Macintosh", "https://www.youtube.com/watch?v=779nru5udpQ", "779nru5udpQ", 1887, false, "/downloads/JeffGeerling/2025-08-22 Try not to kill yourself saving an old Macintosh/Try not to kill yourself saving an old Macintosh [779nru5udpQ].mkv", false, 7, ~U[2025-08-22 14:00:18Z]] 08:52:44.010 [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" = ?) [7] 08:52:44.011 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms 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[2025-08-13 20:00:15Z], 7] 08:52:44.012 [debug] QUERY OK source="media_items" db=0.8ms idle=3.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Sometimes smart devices make me feel really dumb. And dumb devices are a smart idea.\n\nMentioned in this video (some links are affiliate links):\n\n - Home Assistant Connect ZWA-2: https://www.home-assistant.io/connect/zwa-2\n - Zooz 800 Series Z-Wave Long Range Dimmer ZEN72: https://amzn.to/46NmRIj\n - HackRF One: https://amzn.to/40WKGK0\n\nThanks to Nabu Casa for sending the ZWA-2 for testing, and to Zooz for sending a few of their Z-Wave LR devices to connect to it. (The products used in this video were provided for review, but no money exchanged hands and they had no say in the video's contents.)\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Smart TP\n00:46 - My smart problem is dumb\n01:43 - The fix\n02:09 - Setting up ZWA-2 with Home Assistant\n02:53 - A dumb switch that's smarter\n04:20 - Making it smarter with Z-Wave LR\n05:23 - How does it look on SDR?\n06:48 - Spouse Approval Factor\n07:09 - Should you buy one?", "My Smart Home Played me for a Fool", "12ca1f57-7d1f-4c70-b8c9-ec6ec8392457", "https://www.youtube.com/watch?v=AyE0_6N21h4", "AyE0_6N21h4", false, 506, false, 20, "/downloads/JeffGeerling/2025-08-13 My Smart Home Played me for a Fool/My Smart Home Played me for a Fool [AyE0_6N21h4].mkv", false, false, 7, [], 98, ~U[2025-08-13 20:00:15Z], ~U[2025-12-23 08:52:44Z], ~U[2025-12-23 08:52:44Z], "Sometimes smart devices make me feel really dumb. And dumb devices are a smart idea.\n\nMentioned in this video (some links are affiliate links):\n\n - Home Assistant Connect ZWA-2: https://www.home-assistant.io/connect/zwa-2\n - Zooz 800 Series Z-Wave Long Range Dimmer ZEN72: https://amzn.to/46NmRIj\n - HackRF One: https://amzn.to/40WKGK0\n\nThanks to Nabu Casa for sending the ZWA-2 for testing, and to Zooz for sending a few of their Z-Wave LR devices to connect to it. (The products used in this video were provided for review, but no money exchanged hands and they had no say in the video's contents.)\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Smart TP\n00:46 - My smart problem is dumb\n01:43 - The fix\n02:09 - Setting up ZWA-2 with Home Assistant\n02:53 - A dumb switch that's smarter\n04:20 - Making it smarter with Z-Wave LR\n05:23 - How does it look on SDR?\n06:48 - Spouse Approval Factor\n07:09 - Should you buy one?", "My Smart Home Played me for a Fool", "https://www.youtube.com/watch?v=AyE0_6N21h4", "AyE0_6N21h4", 506, false, "/downloads/JeffGeerling/2025-08-13 My Smart Home Played me for a Fool/My Smart Home Played me for a Fool [AyE0_6N21h4].mkv", false, 7, ~U[2025-08-13 20:00:15Z]] 08:52:44.012 [debug] QUERY OK source="sources" db=0.2ms idle=4.4ms UPDATE "sources" SET "last_indexed_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2025-12-23 08:52:44Z], ~U[2025-12-23 08:52:44Z], 7] 08:52:44.013 [debug] QUERY OK source="media_items" db=0.5ms 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 ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 08:52:44.014 [debug] QUERY OK source="media_items" db=0.5ms idle=3.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] 08:52:44.014 [debug] QUERY OK source="media_items" db=0.2ms idle=3.4ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [7] 08:52:44.014 [info] No notification servers provided for source 7 08:52:44.016 [debug] QUERY OK source="tasks" db=0.1ms idle=2.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [7406, 7, ~U[2025-12-23 08:52:44Z], ~U[2025-12-23 08:52:44Z]] 08:52:44.016 [info] {"args":{"id":7},"id":7356,"meta":{},"state":"success","max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","duration":49415256,"event":"job:stop","queue_time":39190,"attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 08:52:45.813 [info] {"source":"oban","duration":800,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:53:00.597 [info] {"source":"oban","duration":475,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:53:15.815 [info] {"source":"oban","duration":732,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:53:45.817 [info] {"source":"oban","duration":1332,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:54:00.599 [info] {"source":"oban","duration":579,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:54:15.820 [info] {"source":"oban","duration":1936,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:54:45.822 [info] {"source":"oban","duration":1343,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:55:00.600 [info] {"source":"oban","duration":261,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:55:15.824 [info] {"source":"oban","duration":1442,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:55:45.826 [info] {"source":"oban","duration":897,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:56:00.602 [info] {"source":"oban","duration":301,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:56:15.829 [info] {"source":"oban","duration":1251,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:56:45.832 [info] {"source":"oban","duration":1942,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:57:00.604 [info] {"source":"oban","duration":441,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:57:15.834 [info] {"source":"oban","duration":1259,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:57:45.836 [info] {"source":"oban","duration":1327,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:58:00.606 [info] {"source":"oban","duration":484,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:58:15.838 [info] {"source":"oban","duration":990,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:58:45.840 [info] {"source":"oban","duration":1707,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:59:00.607 [info] {"source":"oban","duration":359,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:59:15.842 [info] {"source":"oban","duration":724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:59:45.844 [info] {"source":"oban","duration":1620,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:00:00.610 [info] {"source":"oban","duration":903,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:00:15.846 [info] {"source":"oban","duration":972,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:00:45.848 [info] {"source":"oban","duration":1398,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:01:00.612 [info] {"source":"oban","duration":307,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:01:15.850 [info] {"source":"oban","duration":1686,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:01:45.852 [info] {"source":"oban","duration":797,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:02:00.613 [info] {"source":"oban","duration":516,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:02:15.854 [info] {"source":"oban","duration":812,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:02:45.856 [info] {"source":"oban","duration":776,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:03:00.615 [info] {"source":"oban","duration":618,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:03:15.858 [info] {"source":"oban","duration":824,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:03:45.860 [info] {"source":"oban","duration":1480,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:04:00.617 [info] {"source":"oban","duration":414,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:04:15.863 [info] {"source":"oban","duration":1762,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:04:45.865 [info] {"source":"oban","duration":983,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:05:00.619 [info] {"source":"oban","duration":504,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:05:15.868 [info] {"source":"oban","duration":1792,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:05:45.871 [info] {"source":"oban","duration":1753,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:06:00.620 [info] {"source":"oban","duration":367,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:06:15.873 [info] {"source":"oban","duration":913,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:06:45.875 [info] {"source":"oban","duration":1391,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:07:00.621 [info] {"source":"oban","duration":327,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:07:15.877 [info] {"source":"oban","duration":1248,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:07:45.879 [info] {"source":"oban","duration":1343,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:08:00.622 [info] {"source":"oban","duration":344,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:08:15.880 [info] {"source":"oban","duration":674,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:08:45.882 [info] {"source":"oban","duration":1274,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:09:00.624 [info] {"source":"oban","duration":892,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:09:15.884 [info] {"source":"oban","duration":1095,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:09:45.886 [info] {"source":"oban","duration":756,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:10:00.626 [info] {"source":"oban","duration":706,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:10:15.888 [info] {"source":"oban","duration":1421,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:10:45.890 [info] {"source":"oban","duration":1162,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:11:00.628 [info] {"source":"oban","duration":1107,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:11:15.892 [info] {"source":"oban","duration":811,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:11:45.894 [info] {"source":"oban","duration":998,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:12:00.630 [info] {"source":"oban","duration":443,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:12:15.896 [info] {"source":"oban","duration":1562,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:12:45.898 [info] {"source":"oban","duration":1167,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:13:00.632 [info] {"source":"oban","duration":1472,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:13:15.900 [info] {"source":"oban","duration":788,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:13:45.902 [info] {"source":"oban","duration":1266,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:14:00.634 [info] {"source":"oban","duration":537,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:14:15.905 [info] {"source":"oban","duration":1701,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:14:45.907 [info] {"source":"oban","duration":817,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:15:00.636 [info] {"source":"oban","duration":789,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:15:15.909 [info] {"source":"oban","duration":1030,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:15:45.911 [info] {"source":"oban","duration":1517,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:16:00.637 [info] {"source":"oban","duration":522,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:16:15.912 [info] {"source":"oban","duration":686,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:16:45.914 [info] {"source":"oban","duration":1024,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:17:00.639 [info] {"source":"oban","duration":532,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:17:15.916 [info] {"source":"oban","duration":1056,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:17:45.918 [info] {"source":"oban","duration":874,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:18:00.641 [info] {"source":"oban","duration":668,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:18:15.920 [info] {"source":"oban","duration":870,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:18:45.922 [info] {"source":"oban","duration":1132,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:19:00.642 [info] {"source":"oban","duration":282,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:19:15.924 [info] {"source":"oban","duration":1323,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:19:45.926 [info] {"source":"oban","duration":1117,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:20:00.643 [info] {"source":"oban","duration":359,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:20:15.929 [info] {"source":"oban","duration":1212,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:20:45.931 [info] {"source":"oban","duration":1369,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:21:00.644 [info] {"source":"oban","duration":328,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:21:15.933 [info] {"source":"oban","duration":998,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:21:45.935 [info] {"source":"oban","duration":1340,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:22:00.646 [info] {"source":"oban","duration":314,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:22:15.938 [info] {"source":"oban","duration":1649,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:22:45.940 [info] {"source":"oban","duration":1452,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:23:00.647 [info] {"source":"oban","duration":304,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:23:15.942 [info] {"source":"oban","duration":1315,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:23:45.945 [info] {"source":"oban","duration":1738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:24:00.648 [info] {"source":"oban","duration":312,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:24:15.948 [info] {"source":"oban","duration":1991,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:24:45.950 [info] {"source":"oban","duration":1223,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:25:00.650 [info] {"source":"oban","duration":534,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:25:15.952 [info] {"source":"oban","duration":732,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:25:45.954 [info] {"source":"oban","duration":1168,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:26:00.652 [info] {"source":"oban","duration":866,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:26:15.956 [info] {"source":"oban","duration":858,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:26:45.958 [info] {"source":"oban","duration":1214,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:27:00.654 [info] {"source":"oban","duration":688,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:27:15.960 [info] {"source":"oban","duration":1262,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:27:45.962 [info] {"source":"oban","duration":863,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:28:00.656 [info] {"source":"oban","duration":637,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:28:15.965 [info] {"source":"oban","duration":1748,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:28:45.967 [info] {"source":"oban","duration":1448,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:29:00.658 [info] {"source":"oban","duration":402,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:29:15.970 [info] {"source":"oban","duration":1734,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:29:45.972 [info] {"source":"oban","duration":1376,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:30:00.660 [info] {"source":"oban","duration":445,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:30:15.974 [info] {"source":"oban","duration":1249,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:30:45.977 [info] {"source":"oban","duration":1784,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:31:00.662 [info] {"source":"oban","duration":511,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:31:15.979 [info] {"source":"oban","duration":1352,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:31:45.981 [info] {"source":"oban","duration":1294,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:32:00.664 [info] {"source":"oban","duration":362,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:32:15.984 [info] {"source":"oban","duration":1725,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:32:45.986 [info] {"source":"oban","duration":1123,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:33:00.664 [info] {"source":"oban","duration":252,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:33:15.988 [info] {"source":"oban","duration":1046,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:33:45.990 [info] {"source":"oban","duration":1089,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:34:00.666 [info] {"source":"oban","duration":526,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:34:15.992 [info] {"source":"oban","duration":832,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:34:45.994 [info] {"source":"oban","duration":878,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:35:00.668 [info] {"source":"oban","duration":668,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:35:15.995 [info] {"source":"oban","duration":594,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:35:45.997 [info] {"source":"oban","duration":1299,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:36:00.670 [info] {"source":"oban","duration":1282,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:36:15.999 [info] {"source":"oban","duration":869,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:36:46.001 [info] {"source":"oban","duration":1492,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:37:00.671 [info] {"source":"oban","duration":442,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:37:16.004 [info] {"source":"oban","duration":1354,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:37:46.006 [info] {"source":"oban","duration":1399,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:38:00.672 [info] {"source":"oban","duration":367,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:38:16.008 [info] {"source":"oban","duration":1423,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:38:46.010 [info] {"source":"oban","duration":1428,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:39:00.673 [info] {"source":"oban","duration":317,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:39:16.012 [info] {"source":"oban","duration":1437,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:39:46.014 [info] {"source":"oban","duration":1536,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:40:00.674 [info] {"source":"oban","duration":480,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:40:16.016 [info] {"source":"oban","duration":1464,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:40:46.018 [info] {"source":"oban","duration":890,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:41:00.676 [info] {"source":"oban","duration":364,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:41:16.020 [info] {"source":"oban","duration":1188,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:41:46.022 [info] {"source":"oban","duration":1229,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:42:00.678 [info] {"source":"oban","duration":489,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:42:16.024 [info] {"source":"oban","duration":1178,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:42:46.026 [info] {"source":"oban","duration":1326,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:43:00.680 [info] {"source":"oban","duration":605,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:43:16.028 [info] {"source":"oban","duration":636,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:43:46.029 [info] {"source":"oban","duration":696,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:44:00.682 [info] {"source":"oban","duration":250,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:44:16.031 [info] {"source":"oban","duration":1199,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:44:46.034 [info] {"source":"oban","duration":1778,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:45:00.683 [info] {"source":"oban","duration":305,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:45:16.036 [info] {"source":"oban","duration":1216,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:45:46.039 [info] {"source":"oban","duration":1444,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:46:00.684 [info] {"source":"oban","duration":273,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:46:16.041 [info] {"source":"oban","duration":1425,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:46:46.043 [info] {"source":"oban","duration":982,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:47:00.686 [info] {"source":"oban","duration":725,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:47:16.045 [info] {"source":"oban","duration":1384,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:47:46.047 [info] {"source":"oban","duration":1399,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:48:00.688 [info] {"source":"oban","duration":610,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:48:16.049 [info] {"source":"oban","duration":1420,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:48:46.051 [info] {"source":"oban","duration":1042,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:49:00.690 [info] {"source":"oban","duration":420,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:49:16.054 [info] {"source":"oban","duration":1462,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:49:46.055 [info] {"source":"oban","duration":837,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:50:00.692 [info] {"source":"oban","duration":493,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:50:16.057 [info] {"source":"oban","duration":1090,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:50:46.059 [info] {"source":"oban","duration":1369,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:51:00.693 [info] {"source":"oban","duration":302,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:51:16.061 [info] {"source":"oban","duration":838,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:51:46.063 [info] {"source":"oban","duration":1336,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:52:00.695 [info] {"source":"oban","duration":888,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:52:16.065 [info] {"source":"oban","duration":1088,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:52:46.067 [info] {"source":"oban","duration":1258,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:53:00.697 [info] {"source":"oban","duration":491,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:53:16.069 [info] {"source":"oban","duration":988,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:53:46.071 [info] {"source":"oban","duration":933,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:54:00.699 [info] {"source":"oban","duration":716,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:54:16.073 [info] {"source":"oban","duration":1232,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:54:46.075 [info] {"source":"oban","duration":818,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:55:00.701 [info] {"source":"oban","duration":524,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:55:16.077 [info] {"source":"oban","duration":1598,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:55:46.079 [info] {"source":"oban","duration":1437,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:56:00.702 [info] {"source":"oban","duration":435,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:56:16.081 [info] {"source":"oban","duration":837,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:56:46.083 [info] {"source":"oban","duration":1222,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:57:00.704 [info] {"source":"oban","duration":441,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:57:16.085 [info] {"source":"oban","duration":1000,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:57:46.088 [info] {"source":"oban","duration":1788,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:58:00.705 [info] {"source":"oban","duration":256,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:58:16.091 [info] {"source":"oban","duration":1012,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:58:46.092 [info] {"source":"oban","duration":1252,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:59:00.707 [info] {"source":"oban","duration":656,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:59:16.094 [info] {"source":"oban","duration":829,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:59:46.096 [info] {"source":"oban","duration":793,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:00:00.709 [info] {"source":"oban","duration":635,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:00:16.098 [info] {"source":"oban","duration":1120,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:00:46.099 [info] {"source":"oban","duration":608,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:01:00.710 [info] {"source":"oban","duration":407,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:01:16.101 [info] {"source":"oban","duration":982,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:01:46.102 [info] {"source":"oban","duration":695,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:02:00.712 [info] {"source":"oban","duration":441,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:02:16.104 [info] {"source":"oban","duration":1592,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:02:46.106 [info] {"source":"oban","duration":1315,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:03:00.714 [info] {"source":"oban","duration":519,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:03:16.109 [info] {"source":"oban","duration":1426,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:03:46.111 [info] {"source":"oban","duration":931,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:04:00.716 [info] {"source":"oban","duration":554,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:04:16.113 [info] {"source":"oban","duration":1465,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:04:46.115 [info] {"source":"oban","duration":838,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:05:00.718 [info] {"source":"oban","duration":1052,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:05:16.116 [info] {"source":"oban","duration":607,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:05:46.118 [info] {"source":"oban","duration":1138,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:06:00.719 [info] {"source":"oban","duration":459,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:06:16.120 [info] {"source":"oban","duration":871,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:06:46.122 [info] {"source":"oban","duration":1267,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:07:00.720 [info] {"source":"oban","duration":303,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:07:16.124 [info] {"source":"oban","duration":1208,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:07:46.126 [info] {"source":"oban","duration":820,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:08:00.721 [info] {"source":"oban","duration":440,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:08:16.129 [info] {"source":"oban","duration":1770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:08:46.130 [info] {"source":"oban","duration":666,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:09:00.723 [info] {"source":"oban","duration":534,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:09:16.132 [info] {"source":"oban","duration":1011,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:09:46.134 [info] {"source":"oban","duration":1039,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:10:00.725 [info] {"source":"oban","duration":519,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:10:16.136 [info] {"source":"oban","duration":899,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:10:46.139 [info] {"source":"oban","duration":1937,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:11:00.726 [info] {"source":"oban","duration":379,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:11:16.141 [info] {"source":"oban","duration":1352,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:11:46.143 [info] {"source":"oban","duration":1072,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:12:00.727 [info] {"source":"oban","duration":573,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:12:16.145 [info] {"source":"oban","duration":1126,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:12:46.147 [info] {"source":"oban","duration":1528,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:13:00.728 [info] {"source":"oban","duration":382,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:13:16.149 [info] {"source":"oban","duration":1489,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:13:46.151 [info] {"source":"oban","duration":1353,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:14:00.730 [info] {"source":"oban","duration":605,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:14:16.153 [info] {"source":"oban","duration":1034,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:14:46.155 [info] {"source":"oban","duration":1107,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:15:00.732 [info] {"source":"oban","duration":603,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:15:16.157 [info] {"source":"oban","duration":1562,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:15:46.159 [info] {"source":"oban","duration":950,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:16:00.734 [info] {"source":"oban","duration":789,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:16:16.161 [info] {"source":"oban","duration":1154,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:16:46.163 [info] {"source":"oban","duration":905,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:17:00.736 [info] {"source":"oban","duration":335,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:17:16.165 [info] {"source":"oban","duration":1089,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:17:46.167 [info] {"source":"oban","duration":669,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:18:00.737 [info] {"source":"oban","duration":273,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:18:16.169 [info] {"source":"oban","duration":895,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:18:46.171 [info] {"source":"oban","duration":1135,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:19:00.738 [info] {"source":"oban","duration":344,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:19:16.173 [info] {"source":"oban","duration":916,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:19:46.175 [info] {"source":"oban","duration":1609,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:20:00.740 [info] {"source":"oban","duration":923,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:20:16.177 [info] {"source":"oban","duration":1343,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:20:46.179 [info] {"source":"oban","duration":1625,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:21:00.741 [info] {"source":"oban","duration":253,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:21:16.181 [info] {"source":"oban","duration":1029,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:21:46.184 [info] {"source":"oban","duration":1733,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:22:00.743 [info] {"source":"oban","duration":284,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:22:16.186 [info] {"source":"oban","duration":943,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:22:46.188 [info] {"source":"oban","duration":980,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:23:00.745 [info] {"source":"oban","duration":553,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:23:16.190 [info] {"source":"oban","duration":1036,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:23:46.192 [info] {"source":"oban","duration":1375,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:24:00.747 [info] {"source":"oban","duration":441,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:24:16.194 [info] {"source":"oban","duration":761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:24:46.196 [info] {"source":"oban","duration":1235,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:25:00.748 [info] {"source":"oban","duration":547,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:25:16.198 [info] {"source":"oban","duration":968,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:25:46.200 [info] {"source":"oban","duration":1456,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:26:00.751 [info] {"source":"oban","duration":669,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:26:16.202 [info] {"source":"oban","duration":1141,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:26:46.204 [info] {"source":"oban","duration":1401,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:27:00.752 [info] {"source":"oban","duration":299,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:27:16.206 [info] {"source":"oban","duration":1133,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:27:46.208 [info] {"source":"oban","duration":1232,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:28:00.754 [info] {"source":"oban","duration":1025,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:28:16.210 [info] {"source":"oban","duration":848,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:28:46.212 [info] {"source":"oban","duration":1227,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:29:00.756 [info] {"source":"oban","duration":784,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:29:16.214 [info] {"source":"oban","duration":721,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:29:46.216 [info] {"source":"oban","duration":962,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:30:00.758 [info] {"source":"oban","duration":470,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:30:16.218 [info] {"source":"oban","duration":1180,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:30:46.220 [info] {"source":"oban","duration":1411,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:31:00.760 [info] {"source":"oban","duration":835,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:31:16.222 [info] {"source":"oban","duration":724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:31:46.224 [info] {"source":"oban","duration":1157,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:32:00.762 [info] {"source":"oban","duration":555,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:32:16.226 [info] {"source":"oban","duration":1347,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:32:46.228 [info] {"source":"oban","duration":1453,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:33:00.763 [info] {"source":"oban","duration":561,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:33:16.229 [info] {"source":"oban","duration":615,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:33:46.231 [info] {"source":"oban","duration":1489,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:34:00.766 [info] {"source":"oban","duration":291,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:34:16.233 [info] {"source":"oban","duration":1075,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:34:46.235 [info] {"source":"oban","duration":1238,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:35:00.768 [info] {"source":"oban","duration":1245,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:35:16.238 [info] {"source":"oban","duration":1413,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:35:46.240 [info] {"source":"oban","duration":1214,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:36:00.769 [info] {"source":"oban","duration":368,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:36:16.242 [info] {"source":"oban","duration":1417,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:36:46.244 [info] {"source":"oban","duration":1557,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:37:00.770 [info] {"source":"oban","duration":315,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:37:16.247 [info] {"source":"oban","duration":1652,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:37:46.249 [info] {"source":"oban","duration":759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:38:00.771 [info] {"source":"oban","duration":249,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:38:16.251 [info] {"source":"oban","duration":1168,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:38:46.253 [info] {"source":"oban","duration":768,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:39:00.772 [info] {"source":"oban","duration":428,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:39:16.255 [info] {"source":"oban","duration":1626,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:39:46.258 [info] {"source":"oban","duration":1372,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:40:00.774 [info] {"source":"oban","duration":635,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:40:16.260 [info] {"source":"oban","duration":1022,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:40:46.262 [info] {"source":"oban","duration":1084,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:41:00.776 [info] {"source":"oban","duration":618,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:41:16.264 [info] {"source":"oban","duration":1031,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:41:46.266 [info] {"source":"oban","duration":1272,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:42:00.777 [info] {"source":"oban","duration":325,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:42:16.268 [info] {"source":"oban","duration":1345,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:42:46.270 [info] {"source":"oban","duration":1405,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:43:00.779 [info] {"source":"oban","duration":637,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:43:16.275 [info] {"source":"oban","duration":3711,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:43:46.277 [info] {"source":"oban","duration":1512,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:44:00.781 [info] {"source":"oban","duration":744,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:44:16.279 [info] {"source":"oban","duration":875,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:44:46.281 [info] {"source":"oban","duration":1337,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:45:00.782 [info] {"source":"oban","duration":368,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:45:16.284 [info] {"source":"oban","duration":1360,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:45:46.285 [info] {"source":"oban","duration":828,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:46:00.783 [info] {"source":"oban","duration":360,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:46:16.287 [info] {"source":"oban","duration":1477,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:46:46.290 [info] {"source":"oban","duration":1887,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:47:00.784 [info] {"source":"oban","duration":344,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:47:16.292 [info] {"source":"oban","duration":1267,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:47:46.294 [info] {"source":"oban","duration":969,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:48:00.786 [info] {"source":"oban","duration":440,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:48:16.296 [info] {"source":"oban","duration":1250,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:48:46.298 [info] {"source":"oban","duration":1339,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:49:00.788 [info] {"source":"oban","duration":437,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:49:16.300 [info] {"source":"oban","duration":824,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:49:46.302 [info] {"source":"oban","duration":1360,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:50:00.790 [info] {"source":"oban","duration":360,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:50:16.304 [info] {"source":"oban","duration":733,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:50:46.306 [info] {"source":"oban","duration":1207,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:51:00.790 [info] {"source":"oban","duration":418,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:51:16.308 [info] {"source":"oban","duration":879,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:51:46.311 [info] {"source":"oban","duration":1613,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:52:00.792 [info] {"source":"oban","duration":732,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:52:16.313 [info] {"source":"oban","duration":1639,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:52:46.314 [info] {"source":"oban","duration":898,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:53:00.794 [info] {"source":"oban","duration":772,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:53:16.316 [info] {"source":"oban","duration":1308,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:53:46.318 [info] {"source":"oban","duration":1351,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:54:00.796 [info] {"source":"oban","duration":583,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:54:16.321 [info] {"source":"oban","duration":1642,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:54:46.323 [info] {"source":"oban","duration":1589,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:55:00.797 [info] {"source":"oban","duration":460,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:55:16.325 [info] {"source":"oban","duration":1153,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:55:46.326 [info] {"source":"oban","duration":637,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:56:00.799 [info] {"source":"oban","duration":703,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:56:16.328 [info] {"source":"oban","duration":757,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:56:46.330 [info] {"source":"oban","duration":965,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:57:00.800 [info] {"source":"oban","duration":576,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:57:16.332 [info] {"source":"oban","duration":867,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:57:46.333 [info] {"source":"oban","duration":693,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:58:00.803 [info] {"source":"oban","duration":384,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:58:16.335 [info] {"source":"oban","duration":814,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:58:46.337 [info] {"source":"oban","duration":1089,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:59:00.804 [info] {"source":"oban","duration":325,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:59:16.340 [info] {"source":"oban","duration":1092,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:59:46.342 [info] {"source":"oban","duration":841,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:00:00.806 [info] {"source":"oban","duration":605,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:00:16.344 [info] {"source":"oban","duration":1146,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:00:46.347 [info] {"source":"oban","duration":1619,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:01:00.808 [info] {"source":"oban","duration":1052,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:01:16.349 [info] {"source":"oban","duration":1659,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:01:46.351 [info] {"source":"oban","duration":1323,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:02:00.810 [info] {"source":"oban","duration":412,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:02:16.353 [info] {"source":"oban","duration":956,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:02:46.355 [info] {"source":"oban","duration":1482,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:03:00.811 [info] {"source":"oban","duration":418,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:03:16.357 [info] {"source":"oban","duration":913,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:03:46.359 [info] {"source":"oban","duration":1401,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:04:00.813 [info] {"source":"oban","duration":531,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:04:16.361 [info] {"source":"oban","duration":870,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:04:46.363 [info] {"source":"oban","duration":1196,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:05:00.815 [info] {"source":"oban","duration":489,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:05:16.365 [info] {"source":"oban","duration":1448,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:05:46.367 [info] {"source":"oban","duration":1064,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:06:00.816 [info] {"source":"oban","duration":426,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:06:16.369 [info] {"source":"oban","duration":633,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:06:46.370 [info] {"source":"oban","duration":637,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:07:00.817 [info] {"source":"oban","duration":453,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:07:16.372 [info] {"source":"oban","duration":983,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:07:46.374 [info] {"source":"oban","duration":1655,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:08:00.819 [info] {"source":"oban","duration":609,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:08:16.376 [info] {"source":"oban","duration":1103,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:08:46.378 [info] {"source":"oban","duration":1584,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:09:00.821 [info] {"source":"oban","duration":400,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:09:16.380 [info] {"source":"oban","duration":885,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:09:46.383 [info] {"source":"oban","duration":1916,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:10:00.822 [info] {"source":"oban","duration":397,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:10:16.385 [info] {"source":"oban","duration":1585,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:10:46.387 [info] {"source":"oban","duration":1472,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:11:00.823 [info] {"source":"oban","duration":211,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:11:16.389 [info] {"source":"oban","duration":1236,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:11:46.392 [info] {"source":"oban","duration":1642,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:12:00.825 [info] {"source":"oban","duration":638,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:12:16.393 [info] {"source":"oban","duration":1155,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:12:46.395 [info] {"source":"oban","duration":1322,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:13:00.826 [info] {"source":"oban","duration":325,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:13:16.397 [info] {"source":"oban","duration":1202,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:13:46.399 [info] {"source":"oban","duration":773,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:14:00.828 [info] {"source":"oban","duration":530,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:14:07.180 [info] {"args":{"id":28910},"id":7397,"meta":{},"system_time":1766488447179846125,"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"]} 11:14:07.180 [debug] QUERY OK source="media_items" db=0.2ms idle=1263.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" = ?) [28910] 11:14:07.180 [info] User scripts lifecyle file either not present or is empty. Skipping. 11:14:07.181 [debug] QUERY OK source="sources" db=0.2ms idle=1264.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] 11:14:07.181 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1011.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] 11:14:07.182 [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 [28910] 11:14:07.225 [debug] QUERY OK source="media_metadata" db=0.1ms idle=45.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" = ?) [28910] 11:14:07.226 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=45.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] 11:14:07.226 [debug] QUERY OK source="settings" db=0.1ms idle=45.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:07.226 [debug] QUERY OK source="settings" db=0.1ms idle=45.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:07.227 [debug] Running yt-dlp command for action: get_downloadable_status 11:14:07.227 [debug] QUERY OK source="settings" db=0.0ms idle=45.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:07.227 [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 [] 11:14:07.228 [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:14:07.228 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OMj_7N008C4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f8/3f/f83fc8dcab57046c651e05e14c6c6b4fe0e081fc59ae1d3d517cf302db1742f6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:14:10.522 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OMj_7N008C4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f8/3f/f83fc8dcab57046c651e05e14c6c6b4fe0e081fc59ae1d3d517cf302db1742f6.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: [youtube] OMj_7N008C4: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] OMj_7N008C4: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 11:14:10.522 [debug] Running yt-dlp command for action: download 11:14:10.523 [debug] QUERY OK source="settings" db=0.4ms idle=1603.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:10.523 [debug] QUERY OK source="settings" db=0.1ms idle=1603.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:10.524 [debug] QUERY OK source="settings" db=0.1ms idle=1604.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:10.524 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OMj_7N008C4 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/03/92/03928bcda85800731449dcc469c5d509d74e3d22ec5bf2dbdd1cd977de6e5771.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:14:13.779 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OMj_7N008C4 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/03/92/03928bcda85800731449dcc469c5d509d74e3d22ec5bf2dbdd1cd977de6e5771.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 WARNING: [youtube] OMj_7N008C4: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] OMj_7N008C4: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 11:14:13.779 [error] yt-dlp download error for media item #28910: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] OMj_7N008C4: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] OMj_7N008C4: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 11:14:13.780 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":28910},"id":7397,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6600187,"event":"job:exception","queue_time":225496,"attempt":15,"tags":["media_item","media_fetching","show_in_dashboard"]} 11:14:16.402 [info] {"source":"oban","duration":2053,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:14:46.404 [info] {"source":"oban","duration":1144,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:15:00.829 [info] {"source":"oban","duration":369,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:15:16.406 [info] {"source":"oban","duration":1152,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:15:46.408 [info] {"source":"oban","duration":990,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:16:00.830 [info] {"source":"oban","duration":408,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:16:16.411 [info] {"source":"oban","duration":2033,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:16:46.413 [info] {"source":"oban","duration":854,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:17:00.832 [info] {"source":"oban","duration":267,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:17:16.415 [info] {"source":"oban","duration":872,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:17:46.417 [info] {"source":"oban","duration":1018,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:18:00.833 [info] {"source":"oban","duration":345,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:18:16.419 [info] {"source":"oban","duration":1368,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:18:46.422 [info] {"source":"oban","duration":1737,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:19:00.834 [info] {"source":"oban","duration":307,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:19:16.424 [info] {"source":"oban","duration":822,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:19:46.426 [info] {"source":"oban","duration":1326,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:20:00.835 [info] {"source":"oban","duration":554,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:20:16.428 [info] {"source":"oban","duration":821,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:20:46.431 [info] {"source":"oban","duration":2195,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:21:00.837 [info] {"source":"oban","duration":410,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:21:16.433 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:21:46.435 [info] {"source":"oban","duration":1271,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:22:00.839 [info] {"source":"oban","duration":600,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:22:16.437 [info] {"source":"oban","duration":1554,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:22:46.439 [info] {"source":"oban","duration":1511,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:23:00.841 [info] {"source":"oban","duration":781,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:23:16.441 [info] {"source":"oban","duration":1337,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:23:46.443 [info] {"source":"oban","duration":921,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:24:00.843 [info] {"source":"oban","duration":930,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:24:16.445 [info] {"source":"oban","duration":1634,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:24:46.447 [info] {"source":"oban","duration":830,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:25:00.845 [info] {"source":"oban","duration":629,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:25:16.449 [info] {"source":"oban","duration":776,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:25:46.451 [info] {"source":"oban","duration":1144,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:26:00.846 [info] {"source":"oban","duration":271,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:26:16.453 [info] {"source":"oban","duration":1345,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:26:46.455 [info] {"source":"oban","duration":860,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:27:00.847 [info] {"source":"oban","duration":333,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:27:16.457 [info] {"source":"oban","duration":1320,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:27:46.458 [info] {"source":"oban","duration":679,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:28:00.848 [info] {"source":"oban","duration":605,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:28:16.461 [info] {"source":"oban","duration":1688,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:28:46.462 [info] {"source":"oban","duration":1462,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:29:00.850 [info] {"source":"oban","duration":953,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:29:16.465 [info] {"source":"oban","duration":1690,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:29:46.467 [info] {"source":"oban","duration":1521,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:30:00.852 [info] {"source":"oban","duration":671,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:30:16.469 [info] {"source":"oban","duration":1237,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:30:46.471 [info] {"source":"oban","duration":764,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:31:00.853 [info] {"source":"oban","duration":358,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:31:16.473 [info] {"source":"oban","duration":907,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:31:46.475 [info] {"source":"oban","duration":1305,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:32:00.854 [info] {"source":"oban","duration":558,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:32:16.477 [info] {"source":"oban","duration":1220,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:32:46.479 [info] {"source":"oban","duration":1326,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:33:00.855 [info] {"source":"oban","duration":614,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:33:16.481 [info] {"source":"oban","duration":1305,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:33:46.484 [info] {"source":"oban","duration":1673,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:34:00.857 [info] {"source":"oban","duration":540,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:34:16.486 [info] {"source":"oban","duration":1124,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:34:46.488 [info] {"source":"oban","duration":1432,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:35:00.859 [info] {"source":"oban","duration":742,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:35:16.490 [info] {"source":"oban","duration":946,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:35:46.492 [info] {"source":"oban","duration":1468,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:36:00.861 [info] {"source":"oban","duration":678,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:36:16.494 [info] {"source":"oban","duration":1527,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:36:46.496 [info] {"source":"oban","duration":1304,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:37:00.862 [info] {"source":"oban","duration":470,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:37:16.498 [info] {"source":"oban","duration":1349,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:37:46.500 [info] {"source":"oban","duration":1451,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:38:00.864 [info] {"source":"oban","duration":496,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:38:16.502 [info] {"source":"oban","duration":1577,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:38:46.504 [info] {"source":"oban","duration":1230,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:39:00.865 [info] {"source":"oban","duration":431,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:39:16.506 [info] {"source":"oban","duration":1106,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:39:46.508 [info] {"source":"oban","duration":1192,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:40:00.867 [info] {"source":"oban","duration":892,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:40:16.510 [info] {"source":"oban","duration":1341,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:40:46.512 [info] {"source":"oban","duration":1596,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:41:00.869 [info] {"source":"oban","duration":785,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:41:16.514 [info] {"source":"oban","duration":828,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:41:46.516 [info] {"source":"oban","duration":812,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:42:00.870 [info] {"source":"oban","duration":361,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:42:16.518 [info] {"source":"oban","duration":1076,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:42:46.520 [info] {"source":"oban","duration":1353,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:43:00.871 [info] {"source":"oban","duration":352,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:43:16.522 [info] {"source":"oban","duration":1071,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:43:46.524 [info] {"source":"oban","duration":1066,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:44:00.873 [info] {"source":"oban","duration":429,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:44:16.526 [info] {"source":"oban","duration":914,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:44:46.528 [info] {"source":"oban","duration":1482,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:45:00.874 [info] {"source":"oban","duration":338,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:45:16.530 [info] {"source":"oban","duration":1160,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:45:46.532 [info] {"source":"oban","duration":821,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:46:00.876 [info] {"source":"oban","duration":537,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:46:16.534 [info] {"source":"oban","duration":633,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:46:46.536 [info] {"source":"oban","duration":910,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:47:00.877 [info] {"source":"oban","duration":383,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:47:16.538 [info] {"source":"oban","duration":935,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:47:46.540 [info] {"source":"oban","duration":1044,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:48:00.879 [info] {"source":"oban","duration":654,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:48:16.542 [info] {"source":"oban","duration":808,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:48:46.544 [info] {"source":"oban","duration":1556,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:49:00.880 [info] {"source":"oban","duration":478,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:49:16.546 [info] {"source":"oban","duration":1317,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:49:46.548 [info] {"source":"oban","duration":1133,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:50:00.882 [info] {"source":"oban","duration":371,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:50:16.551 [info] {"source":"oban","duration":1203,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:50:46.553 [info] {"source":"oban","duration":1354,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:51:00.883 [info] {"source":"oban","duration":932,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:51:16.555 [info] {"source":"oban","duration":1468,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:51:46.557 [info] {"source":"oban","duration":944,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:52:00.885 [info] {"source":"oban","duration":492,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:52:16.559 [info] {"source":"oban","duration":1110,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:52:46.561 [info] {"source":"oban","duration":1300,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:53:00.887 [info] {"source":"oban","duration":613,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:53:16.563 [info] {"source":"oban","duration":1238,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:53:46.565 [info] {"source":"oban","duration":1068,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:54:00.888 [info] {"source":"oban","duration":556,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:54:16.567 [info] {"source":"oban","duration":1236,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:54:46.569 [info] {"source":"oban","duration":838,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:55:00.891 [info] {"source":"oban","duration":500,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:55:16.571 [info] {"source":"oban","duration":1289,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:55:46.573 [info] {"source":"oban","duration":1312,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:56:00.893 [info] {"source":"oban","duration":1010,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:56:16.575 [info] {"source":"oban","duration":1099,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:56:46.577 [info] {"source":"oban","duration":1284,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:57:00.894 [info] {"source":"oban","duration":340,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:57:16.579 [info] {"source":"oban","duration":1185,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:57:46.581 [info] {"source":"oban","duration":1388,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:58:00.896 [info] {"source":"oban","duration":697,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:58:16.583 [info] {"source":"oban","duration":1289,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:58:46.585 [info] {"source":"oban","duration":1493,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:59:00.897 [info] {"source":"oban","duration":482,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:59:16.587 [info] {"source":"oban","duration":933,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:59:46.589 [info] {"source":"oban","duration":839,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:00:00.898 [info] {"source":"oban","duration":356,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:00:16.592 [info] {"source":"oban","duration":1050,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:00:46.595 [info] {"source":"oban","duration":1910,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:01:00.899 [info] {"source":"oban","duration":489,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:01:16.597 [info] {"source":"oban","duration":901,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:01:46.599 [info] {"source":"oban","duration":801,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:02:00.901 [info] {"source":"oban","duration":458,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:02:16.601 [info] {"source":"oban","duration":968,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:02:46.603 [info] {"source":"oban","duration":1569,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:03:00.903 [info] {"source":"oban","duration":596,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:03:16.604 [info] {"source":"oban","duration":683,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:03:46.606 [info] {"source":"oban","duration":943,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:04:00.904 [info] {"source":"oban","duration":357,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:04:16.608 [info] {"source":"oban","duration":1235,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:04:46.610 [info] {"source":"oban","duration":844,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:05:00.906 [info] {"source":"oban","duration":408,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:05:16.612 [info] {"source":"oban","duration":875,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:05:46.614 [info] {"source":"oban","duration":846,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:06:00.907 [info] {"source":"oban","duration":331,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:06:16.616 [info] {"source":"oban","duration":856,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:06:46.618 [info] {"source":"oban","duration":1240,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:07:00.909 [info] {"source":"oban","duration":261,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:07:16.620 [info] {"source":"oban","duration":1115,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:07:46.622 [info] {"source":"oban","duration":847,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:08:00.911 [info] {"source":"oban","duration":561,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:08:16.624 [info] {"source":"oban","duration":1156,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:08:46.626 [info] {"source":"oban","duration":1019,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:09:00.913 [info] {"source":"oban","duration":525,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:09:16.628 [info] {"source":"oban","duration":1330,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:09:46.631 [info] {"source":"oban","duration":1387,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:10:00.915 [info] {"source":"oban","duration":613,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:10:16.633 [info] {"source":"oban","duration":1121,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:10:46.635 [info] {"source":"oban","duration":1165,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:11:00.917 [info] {"source":"oban","duration":633,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:11:16.637 [info] {"source":"oban","duration":1005,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:11:46.639 [info] {"source":"oban","duration":1200,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:12:00.918 [info] {"source":"oban","duration":493,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:12:16.640 [info] {"source":"oban","duration":597,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:12:46.642 [info] {"source":"oban","duration":856,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:13:00.919 [info] {"source":"oban","duration":527,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:13:16.644 [info] {"source":"oban","duration":1096,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:13:46.646 [info] {"source":"oban","duration":1139,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:14:00.922 [info] {"source":"oban","duration":530,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:14:16.648 [info] {"source":"oban","duration":1126,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:14:46.650 [info] {"source":"oban","duration":1412,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:15:00.923 [info] {"source":"oban","duration":454,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:15:16.652 [info] {"source":"oban","duration":1045,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:15:46.654 [info] {"source":"oban","duration":1146,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:16:00.924 [info] {"source":"oban","duration":548,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:16:16.656 [info] {"source":"oban","duration":869,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:16:46.658 [info] {"source":"oban","duration":991,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:17:00.925 [info] {"source":"oban","duration":468,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:17:16.660 [info] {"source":"oban","duration":781,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:17:46.662 [info] {"source":"oban","duration":1626,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:18:00.926 [info] {"source":"oban","duration":549,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:18:16.664 [info] {"source":"oban","duration":843,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:18:46.666 [info] {"source":"oban","duration":968,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:19:00.928 [info] {"source":"oban","duration":569,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:19:16.668 [info] {"source":"oban","duration":868,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:19:46.670 [info] {"source":"oban","duration":837,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:20:00.929 [info] {"source":"oban","duration":519,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:20:16.672 [info] {"source":"oban","duration":732,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:20:46.673 [info] {"source":"oban","duration":958,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:21:00.930 [info] {"source":"oban","duration":395,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:21:16.675 [info] {"source":"oban","duration":895,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:21:46.677 [info] {"source":"oban","duration":918,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:22:00.932 [info] {"source":"oban","duration":388,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:22:16.679 [info] {"source":"oban","duration":971,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:22:46.681 [info] {"source":"oban","duration":1134,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:23:00.934 [info] {"source":"oban","duration":412,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:23:16.683 [info] {"source":"oban","duration":1387,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:23:46.684 [info] {"source":"oban","duration":775,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:24:00.935 [info] {"source":"oban","duration":557,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:24:16.686 [info] {"source":"oban","duration":1337,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:24:46.688 [info] {"source":"oban","duration":1333,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:25:00.937 [info] {"source":"oban","duration":522,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:25:16.690 [info] {"source":"oban","duration":1048,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:25:46.692 [info] {"source":"oban","duration":1025,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:26:00.938 [info] {"source":"oban","duration":309,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:26:16.694 [info] {"source":"oban","duration":1302,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:26:46.696 [info] {"source":"oban","duration":1620,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:27:00.939 [info] {"source":"oban","duration":455,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:27:16.698 [info] {"source":"oban","duration":699,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:27:46.700 [info] {"source":"oban","duration":716,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:28:00.941 [info] {"source":"oban","duration":760,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:28:16.701 [info] {"source":"oban","duration":1512,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:28:46.703 [info] {"source":"oban","duration":1222,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:29:00.942 [info] {"source":"oban","duration":374,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:29:16.705 [info] {"source":"oban","duration":1069,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:29:46.707 [info] {"source":"oban","duration":1381,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:30:00.943 [info] {"source":"oban","duration":308,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:30:16.709 [info] {"source":"oban","duration":1139,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:30:46.712 [info] {"source":"oban","duration":1779,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:31:00.944 [info] {"source":"oban","duration":266,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:31:16.714 [info] {"source":"oban","duration":889,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:31:46.716 [info] {"source":"oban","duration":1435,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:32:00.945 [info] {"source":"oban","duration":523,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:32:16.719 [info] {"source":"oban","duration":1280,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:32:46.721 [info] {"source":"oban","duration":2054,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:33:00.946 [info] {"source":"oban","duration":323,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:33:16.723 [info] {"source":"oban","duration":1235,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:33:46.725 [info] {"source":"oban","duration":758,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:34:00.947 [info] {"source":"oban","duration":332,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:34:16.727 [info] {"source":"oban","duration":1071,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:34:46.729 [info] {"source":"oban","duration":1539,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:35:00.949 [info] {"source":"oban","duration":536,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:35:16.731 [info] {"source":"oban","duration":1435,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:35:46.733 [info] {"source":"oban","duration":878,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:36:00.950 [info] {"source":"oban","duration":334,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:36:16.735 [info] {"source":"oban","duration":1117,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:36:46.736 [info] {"source":"oban","duration":699,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:37:00.952 [info] {"source":"oban","duration":609,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:37:16.738 [info] {"source":"oban","duration":1291,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:37:46.740 [info] {"source":"oban","duration":747,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:38:00.954 [info] {"source":"oban","duration":466,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:38:16.742 [info] {"source":"oban","duration":1337,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:38:46.743 [info] {"source":"oban","duration":539,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:39:00.956 [info] {"source":"oban","duration":626,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:39:16.746 [info] {"source":"oban","duration":1524,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:39:46.748 [info] {"source":"oban","duration":1506,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:40:00.958 [info] {"source":"oban","duration":351,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:40:16.750 [info] {"source":"oban","duration":834,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:40:46.753 [info] {"source":"oban","duration":1463,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:41:00.959 [info] {"source":"oban","duration":342,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:41:16.756 [info] {"source":"oban","duration":1523,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:41:46.758 [info] {"source":"oban","duration":1554,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:42:00.960 [info] {"source":"oban","duration":339,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:42:16.760 [info] {"source":"oban","duration":975,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:42:46.762 [info] {"source":"oban","duration":977,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:43:00.961 [info] {"source":"oban","duration":307,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:43:16.764 [info] {"source":"oban","duration":1038,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:43:46.766 [info] {"source":"oban","duration":1456,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:44:00.963 [info] {"source":"oban","duration":576,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:44:16.768 [info] {"source":"oban","duration":892,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:44:46.770 [info] {"source":"oban","duration":1406,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:45:00.965 [info] {"source":"oban","duration":498,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:45:16.773 [info] {"source":"oban","duration":1283,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:45:46.775 [info] {"source":"oban","duration":1233,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:46:00.967 [info] {"source":"oban","duration":518,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:46:16.777 [info] {"source":"oban","duration":1329,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:46:46.779 [info] {"source":"oban","duration":1289,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:47:00.968 [info] {"source":"oban","duration":304,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:47:16.781 [info] {"source":"oban","duration":905,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:47:46.783 [info] {"source":"oban","duration":1398,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:48:00.969 [info] {"source":"oban","duration":306,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:48:16.785 [info] {"source":"oban","duration":1524,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:48:46.788 [info] {"source":"oban","duration":1259,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:49:00.971 [info] {"source":"oban","duration":1341,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:49:16.790 [info] {"source":"oban","duration":1011,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:49:46.792 [info] {"source":"oban","duration":1285,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:50:00.972 [info] {"source":"oban","duration":510,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:50:16.794 [info] {"source":"oban","duration":1154,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:50:46.796 [info] {"source":"oban","duration":1499,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:51:00.973 [info] {"source":"oban","duration":460,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:51:16.798 [info] {"source":"oban","duration":1159,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:51:46.800 [info] {"source":"oban","duration":1040,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:52:00.975 [info] {"source":"oban","duration":545,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:52:16.802 [info] {"source":"oban","duration":842,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:52:46.804 [info] {"source":"oban","duration":1506,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:53:00.976 [info] {"source":"oban","duration":366,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:53:16.806 [info] {"source":"oban","duration":1396,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:53:46.808 [info] {"source":"oban","duration":840,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:54:00.978 [info] {"source":"oban","duration":480,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:54:16.810 [info] {"source":"oban","duration":1102,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:54:46.813 [info] {"source":"oban","duration":1912,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:55:00.979 [info] {"source":"oban","duration":508,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:55:16.815 [info] {"source":"oban","duration":1047,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:55:46.817 [info] {"source":"oban","duration":1217,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:56:00.981 [info] {"source":"oban","duration":565,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:56:16.819 [info] {"source":"oban","duration":1039,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:56:46.821 [info] {"source":"oban","duration":1285,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:57:00.983 [info] {"source":"oban","duration":379,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:57:16.823 [info] {"source":"oban","duration":1048,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:57:46.825 [info] {"source":"oban","duration":1433,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:58:00.985 [info] {"source":"oban","duration":912,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:58:16.827 [info] {"source":"oban","duration":874,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:58:46.829 [info] {"source":"oban","duration":1113,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:59:00.986 [info] {"source":"oban","duration":346,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:59:16.832 [info] {"source":"oban","duration":1998,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:59:46.834 [info] {"source":"oban","duration":1292,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:00:00.987 [info] {"source":"oban","duration":529,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:00:16.836 [info] {"source":"oban","duration":1034,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:00:46.838 [info] {"source":"oban","duration":1176,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:01:00.989 [info] {"source":"oban","duration":475,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:01:16.840 [info] {"source":"oban","duration":1049,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:01:46.842 [info] {"source":"oban","duration":1540,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:02:00.990 [info] {"source":"oban","duration":493,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:02:16.844 [info] {"source":"oban","duration":810,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:02:46.846 [info] {"source":"oban","duration":984,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:03:00.992 [info] {"source":"oban","duration":559,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:03:16.848 [info] {"source":"oban","duration":717,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:03:46.849 [info] {"source":"oban","duration":991,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:04:00.994 [info] {"source":"oban","duration":606,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:04:16.851 [info] {"source":"oban","duration":1558,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:04:46.854 [info] {"source":"oban","duration":1403,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:05:00.996 [info] {"source":"oban","duration":718,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:05:16.857 [info] {"source":"oban","duration":1424,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:05:46.859 [info] {"source":"oban","duration":1320,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:06:00.998 [info] {"source":"oban","duration":516,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:06:16.861 [info] {"source":"oban","duration":883,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:06:46.864 [info] {"source":"oban","duration":1758,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:07:00.999 [info] {"source":"oban","duration":349,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:07:16.866 [info] {"source":"oban","duration":1007,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:07:46.868 [info] {"source":"oban","duration":1395,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:08:01.000 [info] {"source":"oban","duration":469,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:08:16.870 [info] {"source":"oban","duration":1250,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:08:46.872 [info] {"source":"oban","duration":1344,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:09:00.001 [info] {"source":"oban","duration":540,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:09:16.874 [info] {"source":"oban","duration":749,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:09:46.876 [info] {"source":"oban","duration":1553,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:10:00.003 [info] {"source":"oban","duration":339,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:10:16.878 [info] {"source":"oban","duration":1239,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:10:46.880 [info] {"source":"oban","duration":1200,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:11:00.004 [info] {"source":"oban","duration":447,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:11:16.883 [info] {"source":"oban","duration":1740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:11:46.885 [info] {"source":"oban","duration":1048,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:12:00.006 [info] {"source":"oban","duration":683,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:12:16.887 [info] {"source":"oban","duration":1085,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:12:46.889 [info] {"source":"oban","duration":1220,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:13:00.007 [info] {"source":"oban","duration":384,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:13:16.892 [info] {"source":"oban","duration":1683,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:13:46.894 [info] {"source":"oban","duration":1538,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:14:00.008 [info] {"source":"oban","duration":262,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:14:16.897 [info] {"source":"oban","duration":2108,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:14:46.899 [info] {"source":"oban","duration":1484,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:15:00.009 [info] {"source":"oban","duration":352,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:15:16.902 [info] {"source":"oban","duration":1749,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:15:46.904 [info] {"source":"oban","duration":1403,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:16:00.010 [info] {"source":"oban","duration":413,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:16:16.906 [info] {"source":"oban","duration":1380,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:16:46.909 [info] {"source":"oban","duration":1972,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:17:00.011 [info] {"source":"oban","duration":408,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:17:16.911 [info] {"source":"oban","duration":1556,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:17:46.913 [info] {"source":"oban","duration":1055,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:18:00.013 [info] {"source":"oban","duration":518,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:18:16.915 [info] {"source":"oban","duration":1030,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:18:46.917 [info] {"source":"oban","duration":1234,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:19:00.014 [info] {"source":"oban","duration":284,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:19:16.919 [info] {"source":"oban","duration":1090,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:19:46.921 [info] {"source":"oban","duration":777,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:20:00.015 [info] {"source":"oban","duration":305,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:20:16.922 [info] {"source":"oban","duration":947,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:20:46.924 [info] {"source":"oban","duration":1551,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:21:00.017 [info] {"source":"oban","duration":438,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:21:16.926 [info] {"source":"oban","duration":880,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:21:46.928 [info] {"source":"oban","duration":1212,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:22:00.018 [info] {"source":"oban","duration":434,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:22:16.930 [info] {"source":"oban","duration":832,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:22:46.933 [info] {"source":"oban","duration":1748,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:23:00.020 [info] {"source":"oban","duration":864,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:23:16.935 [info] {"source":"oban","duration":1265,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:23:46.937 [info] {"source":"oban","duration":1054,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:24:00.022 [info] {"source":"oban","duration":486,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:24:16.939 [info] {"source":"oban","duration":892,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:24:46.941 [info] {"source":"oban","duration":877,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:25:00.023 [info] {"source":"oban","duration":483,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:25:16.943 [info] {"source":"oban","duration":1322,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:25:46.945 [info] {"source":"oban","duration":865,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:26:00.024 [info] {"source":"oban","duration":347,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:26:16.947 [info] {"source":"oban","duration":870,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:26:46.949 [info] {"source":"oban","duration":1366,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:27:00.026 [info] {"source":"oban","duration":766,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:27:16.951 [info] {"source":"oban","duration":985,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:27:46.953 [info] {"source":"oban","duration":1261,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:28:00.027 [info] {"source":"oban","duration":529,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:28:16.955 [info] {"source":"oban","duration":1220,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:28:46.957 [info] {"source":"oban","duration":966,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:29:00.028 [info] {"source":"oban","duration":329,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:29:16.959 [info] {"source":"oban","duration":982,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:29:46.961 [info] {"source":"oban","duration":1026,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:30:00.030 [info] {"source":"oban","duration":656,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:30:16.962 [info] {"source":"oban","duration":546,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:30:46.964 [info] {"source":"oban","duration":830,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:31:00.031 [info] {"source":"oban","duration":497,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:31:16.966 [info] {"source":"oban","duration":1068,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:31:46.968 [info] {"source":"oban","duration":1616,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:32:00.032 [info] {"source":"oban","duration":314,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:32:16.970 [info] {"source":"oban","duration":1140,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:32:46.972 [info] {"source":"oban","duration":921,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:33:00.033 [info] {"source":"oban","duration":467,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:33:16.975 [info] {"source":"oban","duration":1617,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:33:46.977 [info] {"source":"oban","duration":997,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:34:00.035 [info] {"source":"oban","duration":609,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:34:16.979 [info] {"source":"oban","duration":1156,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:34:46.981 [info] {"source":"oban","duration":985,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:35:00.037 [info] {"source":"oban","duration":317,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:35:16.983 [info] {"source":"oban","duration":1166,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:35:46.984 [info] {"source":"oban","duration":679,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:36:00.038 [info] {"source":"oban","duration":281,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:36:16.986 [info] {"source":"oban","duration":1331,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:36:46.988 [info] {"source":"oban","duration":1394,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:37:00.039 [info] {"source":"oban","duration":422,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:37:16.990 [info] {"source":"oban","duration":1097,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:37:46.992 [info] {"source":"oban","duration":967,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:38:00.041 [info] {"source":"oban","duration":419,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:38:16.994 [info] {"source":"oban","duration":1039,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:38:46.997 [info] {"source":"oban","duration":1743,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:39:00.042 [info] {"source":"oban","duration":510,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:39:16.999 [info] {"source":"oban","duration":1202,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:39:47.001 [info] {"source":"oban","duration":850,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:40:00.044 [info] {"source":"oban","duration":726,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:40:17.003 [info] {"source":"oban","duration":1590,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:40:47.005 [info] {"source":"oban","duration":1400,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:41:00.045 [info] {"source":"oban","duration":515,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:41:17.007 [info] {"source":"oban","duration":967,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:41:47.009 [info] {"source":"oban","duration":904,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:42:00.047 [info] {"source":"oban","duration":519,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:42:17.011 [info] {"source":"oban","duration":676,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:42:47.013 [info] {"source":"oban","duration":1444,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:43:00.048 [info] {"source":"oban","duration":442,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:43:17.015 [info] {"source":"oban","duration":1147,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:43:47.017 [info] {"source":"oban","duration":1450,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:44:00.050 [info] {"source":"oban","duration":204,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:44:17.019 [info] {"source":"oban","duration":1074,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:44:47.021 [info] {"source":"oban","duration":939,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:45:00.051 [info] {"source":"oban","duration":397,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:45:17.023 [info] {"source":"oban","duration":1058,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:45:47.024 [info] {"source":"oban","duration":578,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:46:00.053 [info] {"source":"oban","duration":742,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:46:17.026 [info] {"source":"oban","duration":1051,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:46:47.028 [info] {"source":"oban","duration":902,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:47:00.054 [info] {"source":"oban","duration":206,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:47:17.031 [info] {"source":"oban","duration":1851,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:47:47.033 [info] {"source":"oban","duration":1332,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:48:00.055 [info] {"source":"oban","duration":323,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:48:17.035 [info] {"source":"oban","duration":1417,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:48:47.037 [info] {"source":"oban","duration":1380,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:49:00.057 [info] {"source":"oban","duration":558,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:49:17.040 [info] {"source":"oban","duration":1377,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:49:47.042 [info] {"source":"oban","duration":1724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:50:00.059 [info] {"source":"oban","duration":918,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:50:17.044 [info] {"source":"oban","duration":1433,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:50:47.046 [info] {"source":"oban","duration":1471,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:51:00.061 [info] {"source":"oban","duration":691,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:51:17.048 [info] {"source":"oban","duration":803,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:51:47.050 [info] {"source":"oban","duration":1123,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:52:00.063 [info] {"source":"oban","duration":458,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:52:17.052 [info] {"source":"oban","duration":1026,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:52:47.054 [info] {"source":"oban","duration":917,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:53:00.065 [info] {"source":"oban","duration":627,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:53:17.056 [info] {"source":"oban","duration":795,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:53:47.058 [info] {"source":"oban","duration":1542,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:54:00.066 [info] {"source":"oban","duration":1012,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:54:17.060 [info] {"source":"oban","duration":816,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:54:47.062 [info] {"source":"oban","duration":977,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:55:00.067 [info] {"source":"oban","duration":466,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:55:17.064 [info] {"source":"oban","duration":903,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:55:47.066 [info] {"source":"oban","duration":1090,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:56:00.068 [info] {"source":"oban","duration":395,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:56:17.068 [info] {"source":"oban","duration":1007,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:56:47.070 [info] {"source":"oban","duration":1121,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:57:00.070 [info] {"source":"oban","duration":437,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:57:17.072 [info] {"source":"oban","duration":876,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:57:47.075 [info] {"source":"oban","duration":1424,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:58:00.072 [info] {"source":"oban","duration":579,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:58:17.077 [info] {"source":"oban","duration":1036,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:58:47.079 [info] {"source":"oban","duration":850,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:59:00.073 [info] {"source":"oban","duration":223,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:59:17.081 [info] {"source":"oban","duration":1337,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:59:47.083 [info] {"source":"oban","duration":1327,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:00:00.074 [info] {"source":"oban","duration":488,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:00:17.085 [info] {"source":"oban","duration":1565,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:00:47.087 [info] {"source":"oban","duration":1022,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:01:00.075 [info] {"source":"oban","duration":209,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:01:17.089 [info] {"source":"oban","duration":1079,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:01:47.091 [info] {"source":"oban","duration":1071,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:02:00.076 [info] {"source":"oban","duration":542,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:02:17.093 [info] {"source":"oban","duration":969,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:02:47.095 [info] {"source":"oban","duration":823,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:03:00.077 [info] {"source":"oban","duration":494,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:03:17.097 [info] {"source":"oban","duration":972,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:03:47.099 [info] {"source":"oban","duration":977,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:04:00.079 [info] {"source":"oban","duration":598,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:04:17.101 [info] {"source":"oban","duration":929,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:04:47.103 [info] {"source":"oban","duration":1152,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:05:00.081 [info] {"source":"oban","duration":734,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:05:17.105 [info] {"source":"oban","duration":1272,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:05:47.107 [info] {"source":"oban","duration":1570,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:06:00.082 [info] {"source":"oban","duration":562,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:06:17.109 [info] {"source":"oban","duration":1173,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:06:47.112 [info] {"source":"oban","duration":1888,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:07:00.084 [info] {"source":"oban","duration":541,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:07:17.115 [info] {"source":"oban","duration":1649,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:07:47.116 [info] {"source":"oban","duration":972,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:08:00.087 [info] {"source":"oban","duration":633,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:08:17.118 [info] {"source":"oban","duration":1230,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:08:47.120 [info] {"source":"oban","duration":1443,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:09:00.088 [info] {"source":"oban","duration":613,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:09:17.122 [info] {"source":"oban","duration":1103,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:09:47.125 [info] {"source":"oban","duration":1136,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:10:00.091 [info] {"source":"oban","duration":871,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:10:17.127 [info] {"source":"oban","duration":847,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:10:47.129 [info] {"source":"oban","duration":1000,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:11:00.092 [info] {"source":"oban","duration":509,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:11:17.131 [info] {"source":"oban","duration":1120,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:11:47.133 [info] {"source":"oban","duration":788,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:12:00.093 [info] {"source":"oban","duration":278,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:12:17.135 [info] {"source":"oban","duration":1062,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:12:47.137 [info] {"source":"oban","duration":909,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:13:00.095 [info] {"source":"oban","duration":550,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:13:17.139 [info] {"source":"oban","duration":1067,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:13:47.142 [info] {"source":"oban","duration":1502,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:14:00.097 [info] {"source":"oban","duration":775,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:14:17.144 [info] {"source":"oban","duration":1227,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:14:47.146 [info] {"source":"oban","duration":1119,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:15:00.099 [info] {"source":"oban","duration":711,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:15:17.149 [info] {"source":"oban","duration":1808,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:15:47.151 [info] {"source":"oban","duration":1338,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:16:00.101 [info] {"source":"oban","duration":725,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:16:17.153 [info] {"source":"oban","duration":1305,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:16:47.155 [info] {"source":"oban","duration":1332,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:17:00.102 [info] {"source":"oban","duration":342,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:17:17.157 [info] {"source":"oban","duration":1025,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:17:47.159 [info] {"source":"oban","duration":822,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:18:00.104 [info] {"source":"oban","duration":529,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:18:17.161 [info] {"source":"oban","duration":814,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:18:47.163 [info] {"source":"oban","duration":924,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:19:00.106 [info] {"source":"oban","duration":581,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:19:17.165 [info] {"source":"oban","duration":959,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:19:47.167 [info] {"source":"oban","duration":1265,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:20:00.107 [info] {"source":"oban","duration":390,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:20:17.169 [info] {"source":"oban","duration":705,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:20:47.171 [info] {"source":"oban","duration":1324,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:21:00.109 [info] {"source":"oban","duration":556,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:21:17.173 [info] {"source":"oban","duration":958,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:21:47.175 [info] {"source":"oban","duration":867,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:22:00.110 [info] {"source":"oban","duration":325,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:22:17.177 [info] {"source":"oban","duration":1635,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:22:47.180 [info] {"source":"oban","duration":1670,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:23:00.111 [info] {"source":"oban","duration":439,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:23:17.182 [info] {"source":"oban","duration":1853,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:23:47.184 [info] {"source":"oban","duration":1426,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:24:00.113 [info] {"source":"oban","duration":470,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:24:17.186 [info] {"source":"oban","duration":931,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:24:47.188 [info] {"source":"oban","duration":1062,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:25:00.114 [info] {"source":"oban","duration":341,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:25:17.190 [info] {"source":"oban","duration":768,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:25:47.192 [info] {"source":"oban","duration":1053,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:26:00.116 [info] {"source":"oban","duration":517,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:26:17.194 [info] {"source":"oban","duration":916,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:26:47.196 [info] {"source":"oban","duration":1283,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:27:00.118 [info] {"source":"oban","duration":1051,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:27:17.198 [info] {"source":"oban","duration":671,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:27:47.200 [info] {"source":"oban","duration":1098,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:28:00.119 [info] {"source":"oban","duration":464,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:28:17.202 [info] {"source":"oban","duration":1064,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:28:47.203 [info] {"source":"oban","duration":704,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:29:00.120 [info] {"source":"oban","duration":420,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:29:17.205 [info] {"source":"oban","duration":1372,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:29:47.207 [info] {"source":"oban","duration":1026,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:30:00.122 [info] {"source":"oban","duration":293,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:30:17.209 [info] {"source":"oban","duration":886,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:30:47.212 [info] {"source":"oban","duration":1780,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:31:00.124 [info] {"source":"oban","duration":841,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:31:17.214 [info] {"source":"oban","duration":1577,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:31:47.216 [info] {"source":"oban","duration":1311,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:32:00.125 [info] {"source":"oban","duration":315,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:32:17.218 [info] {"source":"oban","duration":1016,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:32:47.220 [info] {"source":"oban","duration":1189,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:33:00.126 [info] {"source":"oban","duration":496,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:33:17.222 [info] {"source":"oban","duration":1097,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:33:47.223 [info] {"source":"oban","duration":682,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:34:00.128 [info] {"source":"oban","duration":445,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:34:17.226 [info] {"source":"oban","duration":1667,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:34:47.228 [info] {"source":"oban","duration":995,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:35:00.129 [info] {"source":"oban","duration":298,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:35:17.230 [info] {"source":"oban","duration":1080,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:35:47.232 [info] {"source":"oban","duration":809,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:36:00.130 [info] {"source":"oban","duration":265,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:36:17.234 [info] {"source":"oban","duration":785,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:36:47.236 [info] {"source":"oban","duration":1153,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:37:00.131 [info] {"source":"oban","duration":328,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:37:17.239 [info] {"source":"oban","duration":1657,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:37:47.242 [info] {"source":"oban","duration":1733,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:38:00.132 [info] {"source":"oban","duration":332,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:38:17.244 [info] {"source":"oban","duration":1420,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:38:47.247 [info] {"source":"oban","duration":1699,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:39:00.133 [info] {"source":"oban","duration":552,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:39:17.249 [info] {"source":"oban","duration":762,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:39:47.251 [info] {"source":"oban","duration":1425,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:40:00.134 [info] {"source":"oban","duration":477,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:40:17.254 [info] {"source":"oban","duration":1748,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:40:47.256 [info] {"source":"oban","duration":850,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:41:00.136 [info] {"source":"oban","duration":604,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:41:17.258 [info] {"source":"oban","duration":1277,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:41:47.260 [info] {"source":"oban","duration":861,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:42:00.136 [info] {"source":"oban","duration":568,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:42:17.262 [info] {"source":"oban","duration":875,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:42:47.264 [info] {"source":"oban","duration":946,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:43:00.138 [info] {"source":"oban","duration":625,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:43:17.267 [info] {"source":"oban","duration":1695,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:43:47.269 [info] {"source":"oban","duration":1415,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:44:00.139 [info] {"source":"oban","duration":437,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:44:17.271 [info] {"source":"oban","duration":1712,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:44:47.274 [info] {"source":"oban","duration":1486,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:45:00.140 [info] {"source":"oban","duration":315,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:45:17.276 [info] {"source":"oban","duration":1243,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:45:47.278 [info] {"source":"oban","duration":875,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:46:00.141 [info] {"source":"oban","duration":330,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:46:17.281 [info] {"source":"oban","duration":1717,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:46:47.283 [info] {"source":"oban","duration":1479,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:47:00.142 [info] {"source":"oban","duration":475,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:47:17.285 [info] {"source":"oban","duration":838,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:47:47.287 [info] {"source":"oban","duration":772,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:48:00.143 [info] {"source":"oban","duration":518,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:48:17.290 [info] {"source":"oban","duration":2080,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:48:47.292 [info] {"source":"oban","duration":854,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:49:00.144 [info] {"source":"oban","duration":232,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:49:17.294 [info] {"source":"oban","duration":1040,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:49:47.296 [info] {"source":"oban","duration":866,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:50:00.145 [info] {"source":"oban","duration":538,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:50:17.297 [info] {"source":"oban","duration":720,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:50:47.299 [info] {"source":"oban","duration":1696,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:51:00.147 [info] {"source":"oban","duration":219,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:51:17.301 [info] {"source":"oban","duration":792,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:51:47.303 [info] {"source":"oban","duration":1305,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:52:00.149 [info] {"source":"oban","duration":829,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:52:17.305 [info] {"source":"oban","duration":849,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:52:47.307 [info] {"source":"oban","duration":1577,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:53:00.151 [info] {"source":"oban","duration":939,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:53:17.309 [info] {"source":"oban","duration":1477,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:53:47.311 [info] {"source":"oban","duration":1302,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:54:00.152 [info] {"source":"oban","duration":366,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:54:17.313 [info] {"source":"oban","duration":1396,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:54:47.315 [info] {"source":"oban","duration":1349,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:55:00.154 [info] {"source":"oban","duration":925,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:55:17.318 [info] {"source":"oban","duration":1200,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:55:47.320 [info] {"source":"oban","duration":1392,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:56:00.155 [info] {"source":"oban","duration":535,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:56:17.322 [info] {"source":"oban","duration":1042,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:56:47.324 [info] {"source":"oban","duration":1213,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:57:00.156 [info] {"source":"oban","duration":274,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:57:17.326 [info] {"source":"oban","duration":1274,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:57:47.328 [info] {"source":"oban","duration":1174,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:58:00.157 [info] {"source":"oban","duration":430,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:58:17.330 [info] {"source":"oban","duration":1053,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:58:47.332 [info] {"source":"oban","duration":1251,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:59:00.158 [info] {"source":"oban","duration":339,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:59:17.334 [info] {"source":"oban","duration":1503,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:59:47.336 [info] {"source":"oban","duration":1054,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:00:00.160 [info] {"source":"oban","duration":424,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:00:17.338 [info] {"source":"oban","duration":889,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:00:47.339 [info] {"source":"oban","duration":688,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:01:00.161 [info] {"source":"oban","duration":491,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:01:17.341 [info] {"source":"oban","duration":919,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:01:47.343 [info] {"source":"oban","duration":908,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:02:00.162 [info] {"source":"oban","duration":298,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:02:17.345 [info] {"source":"oban","duration":1259,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:02:47.347 [info] {"source":"oban","duration":1180,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:03:00.163 [info] {"source":"oban","duration":304,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:03:17.349 [info] {"source":"oban","duration":1024,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:03:47.351 [info] {"source":"oban","duration":846,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:04:00.164 [info] {"source":"oban","duration":344,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:04:17.353 [info] {"source":"oban","duration":1362,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:04:47.355 [info] {"source":"oban","duration":921,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:05:00.165 [info] {"source":"oban","duration":346,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:05:17.357 [info] {"source":"oban","duration":1320,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:05:47.359 [info] {"source":"oban","duration":896,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:06:00.166 [info] {"source":"oban","duration":369,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:06:17.361 [info] {"source":"oban","duration":938,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:06:47.363 [info] {"source":"oban","duration":1392,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:07:00.167 [info] {"source":"oban","duration":388,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:07:17.366 [info] {"source":"oban","duration":1859,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:07:47.368 [info] {"source":"oban","duration":974,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:08:00.168 [info] {"source":"oban","duration":468,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:08:17.370 [info] {"source":"oban","duration":1026,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:08:47.372 [info] {"source":"oban","duration":915,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:09:00.170 [info] {"source":"oban","duration":507,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:09:17.374 [info] {"source":"oban","duration":913,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:09:47.376 [info] {"source":"oban","duration":865,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:10:00.172 [info] {"source":"oban","duration":595,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:10:17.378 [info] {"source":"oban","duration":945,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:10:47.382 [info] {"source":"oban","duration":2683,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:11:00.174 [info] {"source":"oban","duration":530,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:11:17.384 [info] {"source":"oban","duration":910,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:11:47.387 [info] {"source":"oban","duration":1841,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:12:00.176 [info] {"source":"oban","duration":1256,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:12:17.389 [info] {"source":"oban","duration":927,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:12:47.392 [info] {"source":"oban","duration":1737,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:13:00.178 [info] {"source":"oban","duration":546,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:13:17.394 [info] {"source":"oban","duration":853,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:13:47.395 [info] {"source":"oban","duration":691,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:14:00.180 [info] {"source":"oban","duration":473,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:14:17.397 [info] {"source":"oban","duration":986,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:14:47.399 [info] {"source":"oban","duration":1463,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:15:00.182 [info] {"source":"oban","duration":689,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:15:17.401 [info] {"source":"oban","duration":1668,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:15:47.403 [info] {"source":"oban","duration":1159,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:16:00.183 [info] {"source":"oban","duration":287,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:16:17.405 [info] {"source":"oban","duration":768,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:16:47.407 [info] {"source":"oban","duration":1585,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:17:00.185 [info] {"source":"oban","duration":360,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:17:17.409 [info] {"source":"oban","duration":1345,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:17:47.411 [info] {"source":"oban","duration":1639,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:18:00.186 [info] {"source":"oban","duration":336,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:18:17.413 [info] {"source":"oban","duration":1297,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:18:47.415 [info] {"source":"oban","duration":1117,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:19:00.188 [info] {"source":"oban","duration":691,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:19:17.417 [info] {"source":"oban","duration":1007,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:19:47.419 [info] {"source":"oban","duration":1467,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:20:00.190 [info] {"source":"oban","duration":543,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:20:17.421 [info] {"source":"oban","duration":1245,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:20:47.423 [info] {"source":"oban","duration":847,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:21:00.192 [info] {"source":"oban","duration":891,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:21:17.425 [info] {"source":"oban","duration":972,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:21:47.427 [info] {"source":"oban","duration":904,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:22:00.195 [info] {"source":"oban","duration":1801,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:22:17.430 [info] {"source":"oban","duration":1208,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:22:47.432 [info] {"source":"oban","duration":1101,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:23:00.196 [info] {"source":"oban","duration":392,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:23:17.434 [info] {"source":"oban","duration":926,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:23:47.436 [info] {"source":"oban","duration":1678,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:24:00.197 [info] {"source":"oban","duration":623,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:24:17.438 [info] {"source":"oban","duration":972,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:24:47.439 [info] {"source":"oban","duration":645,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:25:00.199 [info] {"source":"oban","duration":636,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:25:17.441 [info] {"source":"oban","duration":898,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:25:47.443 [info] {"source":"oban","duration":1659,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:26:00.201 [info] {"source":"oban","duration":679,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:26:17.445 [info] {"source":"oban","duration":1126,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:26:47.447 [info] {"source":"oban","duration":1409,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:27:00.203 [info] {"source":"oban","duration":508,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:27:17.449 [info] {"source":"oban","duration":794,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:27:47.452 [info] {"source":"oban","duration":1797,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:28:00.204 [info] {"source":"oban","duration":322,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:28:17.454 [info] {"source":"oban","duration":1344,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:28:47.456 [info] {"source":"oban","duration":1356,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:29:00.206 [info] {"source":"oban","duration":786,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:29:17.457 [info] {"source":"oban","duration":700,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:29:47.460 [info] {"source":"oban","duration":1855,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:30:00.207 [info] {"source":"oban","duration":456,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:30:17.462 [info] {"source":"oban","duration":1414,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:30:47.464 [info] {"source":"oban","duration":1264,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:31:00.208 [info] {"source":"oban","duration":254,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:31:17.466 [info] {"source":"oban","duration":1317,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:31:47.468 [info] {"source":"oban","duration":1015,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:32:00.209 [info] {"source":"oban","duration":582,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:32:17.470 [info] {"source":"oban","duration":1414,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:32:47.472 [info] {"source":"oban","duration":1262,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:33:00.212 [info] {"source":"oban","duration":505,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:33:17.474 [info] {"source":"oban","duration":617,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:33:47.476 [info] {"source":"oban","duration":778,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:34:00.213 [info] {"source":"oban","duration":530,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:34:17.478 [info] {"source":"oban","duration":660,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:34:47.480 [info] {"source":"oban","duration":1759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:35:00.214 [info] {"source":"oban","duration":255,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:35:17.482 [info] {"source":"oban","duration":1093,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:35:47.484 [info] {"source":"oban","duration":1274,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:36:00.215 [info] {"source":"oban","duration":252,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:36:17.486 [info] {"source":"oban","duration":889,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:36:47.488 [info] {"source":"oban","duration":1452,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:36:47.782 [info] {"args":{"id":23890},"id":7357,"meta":{},"system_time":1766504207782233332,"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"]} 15:36:47.783 [debug] QUERY OK source="media_items" db=0.2ms idle=1231.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" = ?) [23890] 15:36:47.783 [info] User scripts lifecyle file either not present or is empty. Skipping. 15:36:47.783 [debug] QUERY OK source="sources" db=0.2ms idle=1010.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 15:36:47.784 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=295.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:36:47.785 [debug] QUERY OK source="media_items" db=0.3ms 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 [23890] 15:36:47.795 [debug] QUERY OK source="media_metadata" db=0.1ms idle=13.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" = ?) [23890] 15:36:47.796 [debug] QUERY OK source="media_profiles" db=0.2ms idle=12.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:36:47.796 [debug] QUERY OK source="settings" db=0.2ms idle=12.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:36:47.797 [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 [] 15:36:47.801 [debug] Running yt-dlp command for action: get_downloadable_status 15:36:47.816 [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 [] 15:36:47.816 [debug] QUERY OK source="settings" db=0.1ms idle=20.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:36:47.816 [debug] QUERY OK source="settings" db=0.1ms idle=20.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:36:47.816 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=0DZTq6PaZAY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/38/a3/38a3cda88037ce5c2d663969d03c49326275f54740176c3be474314e8ce610b5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 15:36:50.974 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=0DZTq6PaZAY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/38/a3/38a3cda88037ce5c2d663969d03c49326275f54740176c3be474314e8ce610b5.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: [youtube] 0DZTq6PaZAY: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 0DZTq6PaZAY: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 15:36:50.974 [debug] Running yt-dlp command for action: download 15:36:50.974 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1422.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:50.975 [debug] QUERY OK source="settings" db=0.1ms idle=1423.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:50.975 [debug] QUERY OK source="settings" db=0.3ms idle=1423.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:50.975 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=0DZTq6PaZAY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/07/c5/07c5e50464be3c03ff454e10fc1fe806951af30502163c70c4e5eb68bfd56152.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 15:36:54.766 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=0DZTq6PaZAY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/07/c5/07c5e50464be3c03ff454e10fc1fe806951af30502163c70c4e5eb68bfd56152.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 WARNING: [youtube] 0DZTq6PaZAY: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 0DZTq6PaZAY: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 15:36:54.767 [error] yt-dlp download error for media item #23890: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] 0DZTq6PaZAY: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] 0DZTq6PaZAY: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 15:36:54.768 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23890},"id":7357,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6985350,"event":"job:exception","queue_time":517669,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 15:37:00.217 [info] {"source":"oban","duration":629,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:37:17.490 [info] {"source":"oban","duration":1274,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:37:47.492 [info] {"source":"oban","duration":979,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:38:00.219 [info] {"source":"oban","duration":691,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:38:17.494 [info] {"source":"oban","duration":1290,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:38:47.497 [info] {"source":"oban","duration":1893,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:39:00.220 [info] {"source":"oban","duration":242,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:39:17.500 [info] {"source":"oban","duration":1684,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:39:47.501 [info] {"source":"oban","duration":1107,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:40:00.222 [info] {"source":"oban","duration":1212,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:40:17.503 [info] {"source":"oban","duration":964,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:40:47.505 [info] {"source":"oban","duration":1455,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:41:00.224 [info] {"source":"oban","duration":790,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:41:17.507 [info] {"source":"oban","duration":809,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:41:47.509 [info] {"source":"oban","duration":718,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:42:00.226 [info] {"source":"oban","duration":1307,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:42:17.511 [info] {"source":"oban","duration":1080,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:42:38.513 [info] {"args":{"id":23976},"id":7370,"meta":{},"system_time":1766504558513126843,"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"]} 15:42:38.513 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=1906.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" = ?) [23976] 15:42:38.514 [info] User scripts lifecyle file either not present or is empty. Skipping. 15:42:38.514 [debug] QUERY OK source="sources" db=0.3ms idle=1907.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 15:42:38.515 [debug] QUERY OK source="media_profiles" db=0.3ms idle=1012.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:42:38.515 [debug] QUERY OK source="media_items" db=0.3ms idle=9.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 [23976] 15:42:38.516 [debug] QUERY OK source="media_metadata" db=0.1ms idle=3.5ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [23976] 15:42:38.517 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=2.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:42:38.517 [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 [] 15:42:38.517 [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 [] 15:42:38.518 [debug] Running yt-dlp command for action: get_downloadable_status 15:42:38.518 [debug] QUERY OK source="settings" db=0.1ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:42:38.519 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:42:38.519 [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 [] 15:42:38.519 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/j8wAsm5LK4M --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b9/d3/b9d36b27a6b6c69457ee8705ebc6e29c549c5fc92fb2ec7fa0e530655f925917.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 15:42:41.337 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/j8wAsm5LK4M --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b9/d3/b9d36b27a6b6c69457ee8705ebc6e29c549c5fc92fb2ec7fa0e530655f925917.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: [youtube] j8wAsm5LK4M: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] j8wAsm5LK4M: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 15:42:41.338 [debug] Running yt-dlp command for action: download 15:42:41.338 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1731.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:42:41.339 [debug] QUERY OK source="settings" db=0.1ms idle=1732.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:42:41.339 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1732.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:42:41.340 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/j8wAsm5LK4M --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/4c/d2/4cd28cd43bf125d22391f87725d5889d5cc683bc2bcb1e931fe1edbd402c1bf6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 15:42:47.513 [info] {"source":"oban","duration":1294,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:42:51.947 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/j8wAsm5LK4M --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/4c/d2/4cd28cd43bf125d22391f87725d5889d5cc683bc2bcb1e931fe1edbd402c1bf6.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: [youtube] j8wAsm5LK4M: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] j8wAsm5LK4M: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies 15:42:51.975 [debug] Running yt-dlp command for action: download_thumbnail 15:42:51.976 [debug] QUERY OK source="settings" db=0.2ms idle=1369.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:42:51.976 [debug] QUERY OK source="settings" db=0.1ms idle=1370.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:42:51.977 [debug] QUERY OK source="settings" db=0.1ms idle=1370.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:42:51.977 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/j8wAsm5LK4M --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/23976/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/98/c1/98c1a52fb6e7fb1d53f8fed271dcd88372f17518c6b591f3bbfad5629bd0954c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 15:42:55.426 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/j8wAsm5LK4M --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/23976/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/98/c1/98c1a52fb6e7fb1d53f8fed271dcd88372f17518c6b591f3bbfad5629bd0954c.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: [youtube] j8wAsm5LK4M: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] j8wAsm5LK4M: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 15:42:55.427 [debug] QUERY OK db=0.1ms queue=0.1ms idle=1820.9ms begin [] 15:42:55.429 [debug] QUERY OK source="media_items" db=1.0ms UPDATE "media_items" SET "metadata_filepath" = ?, "thumbnail_filepath" = ?, "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? ["/downloads/코드모드 블렌더/2025-02-16 NonLinear Animation의 장점 #블렌더강좌 #블렌더3d #애니메이션제작/NonLinear Animation의 장점 #블렌더강좌 #블렌더3d #애니메이션제작 [j8wAsm5LK4M].info.json", "/downloads/코드모드 블렌더/2025-02-16 NonLinear Animation의 장점 #블렌더강좌 #블렌더3d #애니메이션제작/NonLinear Animation의 장점 #블렌더강좌 #블렌더3d #애니메이션제작 [j8wAsm5LK4M]-thumb.jpg", ~U[2025-12-23 15:42:51Z], "/downloads/코드모드 블렌더/2025-02-16 NonLinear Animation의 장점 #블렌더강좌 #블렌더3d #애니메이션제작/NonLinear Animation의 장점 #블렌더강좌 #블렌더3d #애니메이션제작 [j8wAsm5LK4M].mp4", [["en", "/downloads/코드모드 블렌더/2025-02-16 NonLinear Animation의 장점 #블렌더강좌 #블렌더3d #애니메이션제작/NonLinear Animation의 장점 #블렌더강좌 #블렌더3d #애니메이션제작 [j8wAsm5LK4M].en.srt"]], ~U[2025-12-23 15:42:55Z], 23976] 15:42:55.429 [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/23976/metadata.json.gz", "/config/metadata/media_items/23976/thumbnail.jpg", 23976, ~U[2025-12-23 15:42:55Z], ~U[2025-12-23 15:42:55Z]] 15:42:55.429 [debug] QUERY OK db=0.2ms commit [] 15:42:55.430 [debug] QUERY OK source="media_items" db=0.7ms idle=1823.5ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? [nil, ~U[2025-12-23 15:42:55Z], 23976] 15:42:55.431 [debug] QUERY OK source="media_items" db=0.7ms idle=1824.6ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [2001691, ~U[2025-12-23 15:42:55Z], 23976] 15:42:55.432 [info] User scripts lifecyle file either not present or is empty. Skipping. 15:42:55.432 [info] {"args":{"id":23976},"id":7370,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":16919073,"event":"job:stop","queue_time":874525,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 15:43:00.228 [info] {"source":"oban","duration":722,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:43:17.515 [info] {"source":"oban","duration":1204,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:43:47.517 [info] {"source":"oban","duration":1021,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:44:00.230 [info] {"source":"oban","duration":533,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:44:17.519 [info] {"source":"oban","duration":1278,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:44:47.521 [info] {"source":"oban","duration":875,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:45:00.232 [info] {"source":"oban","duration":504,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:45:17.524 [info] {"source":"oban","duration":1642,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:45:47.526 [info] {"source":"oban","duration":1346,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:46:00.233 [info] {"source":"oban","duration":297,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:46:17.528 [info] {"source":"oban","duration":1286,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:46:47.530 [info] {"source":"oban","duration":1294,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:47:00.234 [info] {"source":"oban","duration":457,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:47:17.533 [info] {"source":"oban","duration":1393,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:47:47.535 [info] {"source":"oban","duration":1640,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:48:00.236 [info] {"source":"oban","duration":477,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:48:17.536 [info] {"source":"oban","duration":1188,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:48:47.538 [info] {"source":"oban","duration":1506,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:49:00.238 [info] {"source":"oban","duration":994,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:49:17.540 [info] {"source":"oban","duration":1544,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:49:47.543 [info] {"source":"oban","duration":1756,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:50:00.239 [info] {"source":"oban","duration":355,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:50:17.545 [info] {"source":"oban","duration":1248,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:50:36.496 [info] {"args":{"id":23983},"id":7373,"meta":{},"system_time":1766505036496520512,"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"]} 15:50:36.497 [debug] QUERY OK source="media_items" db=0.2ms idle=1890.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" = ?) [23983] 15:50:36.497 [info] User scripts lifecyle file either not present or is empty. Skipping. 15:50:36.497 [debug] QUERY OK source="sources" db=0.2ms idle=1890.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" = ?) [8] 15:50:36.497 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1010.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:50:36.498 [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 [23983] 15:50:36.499 [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" = ?) [23983] 15:50:36.499 [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] 15:50:36.499 [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 [] 15:50:36.500 [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 [] 15:50:36.500 [debug] Running yt-dlp command for action: get_downloadable_status 15:50:36.513 [debug] QUERY OK source="settings" db=0.1ms idle=15.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:50:36.514 [debug] QUERY OK source="settings" db=0.0ms idle=14.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:50:36.514 [debug] QUERY OK source="settings" db=0.1ms idle=14.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:50:36.514 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/VtL0m15EgLU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b1/55/b1550e1164b61969702586704355d409538009e81c5217ad048a5de70f18ed81.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 15:50:39.129 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/VtL0m15EgLU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b1/55/b1550e1164b61969702586704355d409538009e81c5217ad048a5de70f18ed81.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: [youtube] VtL0m15EgLU: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] VtL0m15EgLU: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 15:50:39.129 [debug] Running yt-dlp command for action: download 15:50:39.130 [debug] QUERY OK source="settings" db=0.2ms idle=1523.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:50:39.130 [debug] QUERY OK source="settings" db=0.0ms idle=1523.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:50:39.130 [debug] QUERY OK source="settings" db=0.1ms idle=1523.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:50:39.130 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/VtL0m15EgLU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/79/07/7907de13d186c5977bb887b8352ae11cd355f9495ff1e9c5094d484f90b4afc8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 15:50:42.440 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/VtL0m15EgLU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/79/07/7907de13d186c5977bb887b8352ae11cd355f9495ff1e9c5094d484f90b4afc8.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 WARNING: [youtube] VtL0m15EgLU: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] VtL0m15EgLU: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 15:50:42.440 [error] yt-dlp download error for media item #23983: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] VtL0m15EgLU: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] VtL0m15EgLU: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 15:50:42.441 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23983},"id":7373,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":5944148,"event":"job:exception","queue_time":424225,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 15:50:47.547 [info] {"source":"oban","duration":1353,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:51:00.240 [info] {"source":"oban","duration":355,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:51:17.549 [info] {"source":"oban","duration":985,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:51:47.551 [info] {"source":"oban","duration":967,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:52:00.241 [info] {"source":"oban","duration":422,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:52:17.553 [info] {"source":"oban","duration":857,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:52:47.555 [info] {"source":"oban","duration":1449,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:53:00.242 [info] {"source":"oban","duration":479,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:53:17.558 [info] {"source":"oban","duration":1251,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:53:23.846 [info] {"args":{"id":24005},"id":7382,"meta":{},"system_time":1766505203846028652,"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"]} 15:53:23.846 [debug] QUERY OK source="media_items" db=0.2ms idle=1239.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" = ?) [24005] 15:53:23.846 [info] User scripts lifecyle file either not present or is empty. Skipping. 15:53:23.847 [debug] QUERY OK source="sources" db=0.1ms idle=1240.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 15:53:23.847 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1011.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:53:23.848 [debug] QUERY OK source="media_items" db=0.2ms 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 [24005] 15:53:23.848 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [24005] 15:53:23.848 [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] 15:53:23.849 [debug] QUERY OK source="settings" db=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:53:23.849 [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 [] 15:53:23.850 [debug] Running yt-dlp command for action: get_downloadable_status 15:53:23.850 [debug] QUERY OK source="settings" db=0.1ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:53:23.851 [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 [] 15:53:23.851 [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 [] 15:53:23.851 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/iF4PC3Uul0c --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ff/d6/ffd6c3fb4486976ba3ff85db5b267cc39ca482dc242adaa414b95945cc7ef957.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 15:53:26.869 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/iF4PC3Uul0c --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ff/d6/ffd6c3fb4486976ba3ff85db5b267cc39ca482dc242adaa414b95945cc7ef957.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: [youtube] iF4PC3Uul0c: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] iF4PC3Uul0c: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 15:53:26.870 [debug] Running yt-dlp command for action: download 15:53:26.870 [debug] QUERY OK source="settings" db=0.3ms idle=1263.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:53:26.871 [debug] QUERY OK source="settings" db=0.3ms idle=1264.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:53:26.871 [debug] QUERY OK source="settings" db=0.2ms idle=1264.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:53:26.871 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/iF4PC3Uul0c --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/01/60/016044a6105fba850c0b504f7735a677b805653297a601c083b98d49b50c7344.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 15:53:30.253 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/iF4PC3Uul0c --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/01/60/016044a6105fba850c0b504f7735a677b805653297a601c083b98d49b50c7344.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 WARNING: [youtube] iF4PC3Uul0c: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] iF4PC3Uul0c: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 15:53:30.254 [error] yt-dlp download error for media item #24005: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] iF4PC3Uul0c: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] iF4PC3Uul0c: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 15:53:30.255 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":24005},"id":7382,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6408210,"event":"job:exception","queue_time":106620,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 15:53:47.561 [info] {"source":"oban","duration":1976,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:54:00.243 [info] {"source":"oban","duration":504,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:54:17.564 [info] {"source":"oban","duration":1913,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:54:47.566 [info] {"source":"oban","duration":995,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:55:00.245 [info] {"source":"oban","duration":316,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:55:17.568 [info] {"source":"oban","duration":1330,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:55:47.570 [info] {"source":"oban","duration":1313,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:56:00.246 [info] {"source":"oban","duration":233,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:56:17.572 [info] {"source":"oban","duration":896,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:56:47.574 [info] {"source":"oban","duration":1253,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:57:00.247 [info] {"source":"oban","duration":575,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:57:17.576 [info] {"source":"oban","duration":1223,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:57:47.577 [info] {"source":"oban","duration":711,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:58:00.248 [info] {"source":"oban","duration":323,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:58:17.579 [info] {"source":"oban","duration":1070,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:58:47.581 [info] {"source":"oban","duration":763,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:59:00.249 [info] {"source":"oban","duration":324,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:59:17.583 [info] {"source":"oban","duration":942,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:59:47.585 [info] {"source":"oban","duration":1124,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:00:00.251 [info] {"source":"oban","duration":848,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:00:17.587 [info] {"source":"oban","duration":1007,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:00:43.761 [info] {"args":{"id":23972},"id":7368,"meta":{},"system_time":1766505643761683568,"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"]} 16:00:43.762 [debug] QUERY OK source="media_items" db=0.4ms idle=1155.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" = ?) [23972] 16:00:43.762 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:00:43.763 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1156.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" = ?) [8] 16:00:43.763 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1010.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] 16:00:43.764 [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 [23972] 16:00:43.769 [debug] QUERY OK source="media_metadata" db=0.1ms idle=7.5ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [23972] 16:00:43.769 [debug] QUERY OK source="media_profiles" db=0.1ms idle=6.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 16:00:43.770 [debug] QUERY OK source="settings" db=0.1ms idle=6.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:00:43.770 [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 [] 16:00:43.770 [debug] Running yt-dlp command for action: get_downloadable_status 16:00:43.783 [debug] QUERY OK source="settings" db=0.1ms idle=18.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:00:43.783 [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 [] 16:00:43.783 [debug] QUERY OK source="settings" db=0.0ms 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 [] 16:00:43.784 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/vtdzu1-Y8Rs --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/31/51/315130ba1b046c19aac2b7a352e37343d6eb75f5ce456c6fd7566b53fe5ccdee.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:00:46.477 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/vtdzu1-Y8Rs --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/31/51/315130ba1b046c19aac2b7a352e37343d6eb75f5ce456c6fd7566b53fe5ccdee.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: [youtube] vtdzu1-Y8Rs: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] vtdzu1-Y8Rs: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 16:00:46.478 [debug] Running yt-dlp command for action: download 16:00:46.478 [debug] QUERY OK source="settings" db=0.3ms idle=871.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:00:46.479 [debug] QUERY OK source="settings" db=0.1ms idle=872.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:00:46.479 [debug] QUERY OK source="settings" db=0.2ms idle=872.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:00:46.479 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/vtdzu1-Y8Rs --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/95/76/95761fee57ed43b0b6aaa0554c9cfb2eb34960974e41858b8124519d7128906a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:00:47.589 [info] {"source":"oban","duration":1446,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:00:49.927 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/vtdzu1-Y8Rs --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/95/76/95761fee57ed43b0b6aaa0554c9cfb2eb34960974e41858b8124519d7128906a.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 WARNING: [youtube] vtdzu1-Y8Rs: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] vtdzu1-Y8Rs: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 16:00:49.928 [error] yt-dlp download error for media item #23972: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] vtdzu1-Y8Rs: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] vtdzu1-Y8Rs: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 16:00:49.929 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23972},"id":7368,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6166780,"event":"job:exception","queue_time":268479,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:01:00.253 [info] {"source":"oban","duration":495,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:01:16.830 [info] {"args":{"id":23978},"id":7371,"meta":{},"system_time":1766505676830145096,"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"]} 16:01:16.830 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=1223.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" = ?) [23978] 16:01:16.830 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:01:16.831 [debug] QUERY OK source="sources" db=0.1ms idle=1224.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" = ?) [8] 16:01:16.831 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1011.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 16:01:16.831 [debug] QUERY OK source="media_items" db=0.2ms 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 [23978] 16:01:16.845 [debug] QUERY OK source="media_metadata" db=0.1ms idle=15.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" = ?) [23978] 16:01:16.845 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 16:01:16.846 [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 [] 16:01:16.846 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=14.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:01:16.846 [debug] Running yt-dlp command for action: get_downloadable_status 16:01:16.886 [debug] QUERY OK source="settings" db=0.2ms 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 [] 16:01:16.886 [debug] QUERY OK source="settings" db=0.1ms idle=40.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:01:16.886 [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 [] 16:01:16.886 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/1arhAIkIOkQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/01/e0/01e0dca5f813dde0601a30ff0c755fa6c141c5c9f67210ffbb1a9dad218bb1b6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:01:17.591 [info] {"source":"oban","duration":1097,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:01:19.867 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/1arhAIkIOkQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/01/e0/01e0dca5f813dde0601a30ff0c755fa6c141c5c9f67210ffbb1a9dad218bb1b6.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: [youtube] 1arhAIkIOkQ: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 1arhAIkIOkQ: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 16:01:19.867 [debug] Running yt-dlp command for action: download 16:01:19.868 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1261.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:01:19.868 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=1261.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:01:19.869 [debug] QUERY OK source="settings" db=0.1ms idle=1262.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:01:19.869 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/1arhAIkIOkQ --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/57/98/5798ea13bae81f687ee71eb1cc8de9a0d692ec3dbe3b0db690ebb1c43e71e267.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:01:23.070 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/1arhAIkIOkQ --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/57/98/5798ea13bae81f687ee71eb1cc8de9a0d692ec3dbe3b0db690ebb1c43e71e267.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 WARNING: [youtube] 1arhAIkIOkQ: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 1arhAIkIOkQ: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 16:01:23.070 [error] yt-dlp download error for media item #23978: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] 1arhAIkIOkQ: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] 1arhAIkIOkQ: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 16:01:23.071 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23978},"id":7371,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6241017,"event":"job:exception","queue_time":272499,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:01:47.593 [info] {"source":"oban","duration":935,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:02:00.254 [info] {"source":"oban","duration":384,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:02:17.595 [info] {"source":"oban","duration":1247,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:02:47.598 [info] {"source":"oban","duration":1725,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:03:00.256 [info] {"source":"oban","duration":610,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:03:17.084 [info] {"args":{"id":23906},"id":7361,"meta":{},"system_time":1766505797084222920,"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"]} 16:03:17.084 [debug] QUERY OK source="media_items" db=0.2ms idle=478.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [23906] 16:03:17.085 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:03:17.085 [debug] QUERY OK source="sources" db=0.2ms idle=478.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 16:03:17.085 [debug] QUERY OK source="media_profiles" db=0.1ms idle=479.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:03:17.086 [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 [23906] 16:03:17.087 [debug] QUERY OK source="media_metadata" db=0.0ms idle=2.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" = ?) [23906] 16:03:17.087 [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] 16:03:17.088 [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 [] 16:03:17.088 [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 [] 16:03:17.088 [debug] Running yt-dlp command for action: get_downloadable_status 16:03:17.096 [debug] QUERY OK source="settings" db=0.0ms idle=10.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:03:17.096 [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 [] 16:03:17.097 [debug] QUERY OK source="settings" db=0.1ms idle=9.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:03:17.097 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=t8SoogI319k --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/fc/8a/fc8a26b9619ecf4298e48369c16e2052fc30ac7990b7549562858d49e277c4be.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:03:17.600 [info] {"source":"oban","duration":1084,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:03:20.247 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=t8SoogI319k --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/fc/8a/fc8a26b9619ecf4298e48369c16e2052fc30ac7990b7549562858d49e277c4be.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: [youtube] t8SoogI319k: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] t8SoogI319k: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 16:03:20.247 [debug] Running yt-dlp command for action: download 16:03:20.248 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1641.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:03:20.249 [debug] QUERY OK source="settings" db=0.3ms idle=1641.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:03:20.249 [debug] QUERY OK source="settings" db=0.2ms idle=1642.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:03:20.249 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=t8SoogI319k --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/7a/be/7abe8795d268a6eb1c039c40a841f0c05e622036eb1718106cac63c0544fa096.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:03:23.771 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=t8SoogI319k --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/7a/be/7abe8795d268a6eb1c039c40a841f0c05e622036eb1718106cac63c0544fa096.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 WARNING: [youtube] t8SoogI319k: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] t8SoogI319k: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 16:03:23.771 [error] yt-dlp download error for media item #23906: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] t8SoogI319k: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] t8SoogI319k: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 16:03:23.772 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23906},"id":7361,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6687276,"event":"job:exception","queue_time":801413,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:03:47.602 [info] {"source":"oban","duration":1356,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:04:00.257 [info] {"source":"oban","duration":260,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:04:17.604 [info] {"source":"oban","duration":1150,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:04:47.607 [info] {"source":"oban","duration":1391,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:05:00.258 [info] {"source":"oban","duration":328,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:05:17.609 [info] {"source":"oban","duration":1115,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:05:47.611 [info] {"source":"oban","duration":694,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:06:00.260 [info] {"source":"oban","duration":506,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:06:17.613 [info] {"source":"oban","duration":1029,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:06:47.615 [info] {"source":"oban","duration":895,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:07:00.261 [info] {"source":"oban","duration":374,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:07:17.617 [info] {"source":"oban","duration":886,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:07:30.233 [info] {"args":{"id":23987},"id":7375,"meta":{},"system_time":1766506050233165605,"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"]} 16:07:30.233 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=1009.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" = ?) [23987] 16:07:30.234 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:07:30.234 [debug] QUERY OK source="sources" db=0.1ms idle=514.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" = ?) [8] 16:07:30.234 [debug] QUERY OK source="media_profiles" db=0.2ms idle=515.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] 16:07:30.235 [debug] QUERY OK source="media_items" db=0.4ms 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 [23987] 16:07:30.236 [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" = ?) [23987] 16:07:30.237 [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] 16:07:30.237 [debug] QUERY OK source="settings" db=0.3ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:07:30.238 [debug] QUERY OK source="settings" db=0.1ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:07:30.238 [debug] Running yt-dlp command for action: get_downloadable_status 16:07:30.239 [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 [] 16:07:30.239 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:07:30.239 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:07:30.239 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/C73kKbeW6LE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/1d/cf/1dcf579554d558a36040417d4ad30ef8c2e50b4f64eca932631b82b9e536c411.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:07:33.245 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/C73kKbeW6LE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/1d/cf/1dcf579554d558a36040417d4ad30ef8c2e50b4f64eca932631b82b9e536c411.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: [youtube] C73kKbeW6LE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] C73kKbeW6LE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 16:07:33.245 [debug] Running yt-dlp command for action: download 16:07:33.246 [debug] QUERY OK source="settings" db=0.4ms idle=1526.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:07:33.247 [debug] QUERY OK source="settings" db=0.3ms idle=1527.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:07:33.247 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1527.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:07:33.250 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/C73kKbeW6LE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/b8/6c/b86c15da9f8d1b9d3c89e7fed155b5176b287f394838681177d4380e4383c8e5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:07:36.575 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/C73kKbeW6LE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/b8/6c/b86c15da9f8d1b9d3c89e7fed155b5176b287f394838681177d4380e4383c8e5.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 WARNING: [youtube] C73kKbeW6LE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] C73kKbeW6LE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 16:07:36.575 [error] yt-dlp download error for media item #23987: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] C73kKbeW6LE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] C73kKbeW6LE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 16:07:36.576 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23987},"id":7375,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6342513,"event":"job:exception","queue_time":776701,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:07:47.619 [info] {"source":"oban","duration":1050,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:08:00.262 [info] {"source":"oban","duration":316,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:08:17.621 [info] {"source":"oban","duration":1209,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:08:47.623 [info] {"source":"oban","duration":858,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:09:00.264 [info] {"source":"oban","duration":579,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:09:17.626 [info] {"source":"oban","duration":1466,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:09:18.449 [info] {"args":{"id":23902},"id":7360,"meta":{},"system_time":1766506158449090801,"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"]} 16:09:18.449 [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" = ?) [23902] 16:09:18.449 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:09:18.450 [debug] QUERY OK source="sources" db=0.2ms idle=823.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 16:09:18.450 [debug] QUERY OK source="media_profiles" db=0.1ms idle=729.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:09:18.450 [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 [23902] 16:09:18.462 [debug] QUERY OK source="media_metadata" db=0.1ms queue=0.1ms idle=13.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" = ?) [23902] 16:09:18.464 [debug] QUERY OK source="media_profiles" db=1.0ms 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] 16:09:18.465 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=14.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:09:18.466 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms 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 [] 16:09:18.467 [debug] Running yt-dlp command for action: get_downloadable_status 16:09:18.468 [debug] QUERY OK source="settings" db=0.3ms idle=16.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:09:18.469 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=5.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:09:18.472 [debug] QUERY OK source="settings" db=3.4ms queue=0.1ms idle=5.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:09:18.472 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3Fbe09YkgRE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/13/c9/13c92765cb9471bedf5fb1197937e3a07d964c476fe1fcd0d4ddbfe870526995.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:09:21.464 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3Fbe09YkgRE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/13/c9/13c92765cb9471bedf5fb1197937e3a07d964c476fe1fcd0d4ddbfe870526995.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: [youtube] 3Fbe09YkgRE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 3Fbe09YkgRE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 16:09:21.464 [debug] Running yt-dlp command for action: download 16:09:21.465 [debug] QUERY OK source="settings" db=0.2ms idle=1744.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:09:21.465 [debug] QUERY OK source="settings" db=0.1ms idle=1744.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:09:21.465 [debug] QUERY OK source="settings" db=0.2ms idle=1745.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:09:21.466 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3Fbe09YkgRE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/d3/4c/d34c739de15f3997094d7f886d8388fc9942d215ceafe50d9ed1cb3d3161a1f8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:09:24.884 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3Fbe09YkgRE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/d3/4c/d34c739de15f3997094d7f886d8388fc9942d215ceafe50d9ed1cb3d3161a1f8.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 WARNING: [youtube] 3Fbe09YkgRE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 3Fbe09YkgRE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 16:09:24.884 [error] yt-dlp download error for media item #23902: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] 3Fbe09YkgRE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] 3Fbe09YkgRE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 16:09:24.885 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23902},"id":7360,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6435862,"event":"job:exception","queue_time":46327,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:09:47.629 [info] {"source":"oban","duration":1740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:10:00.265 [info] {"source":"oban","duration":286,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:10:06.550 [info] {"args":{"id":23946},"id":7365,"meta":{},"system_time":1766506206550520525,"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"]} 16:10:06.551 [debug] QUERY OK source="media_items" db=0.1ms idle=1830.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" = ?) [23946] 16:10:06.551 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:10:06.551 [debug] QUERY OK source="sources" db=0.2ms idle=1009.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 16:10:06.551 [debug] QUERY OK source="media_profiles" db=0.1ms idle=831.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:10:06.552 [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 [23946] 16:10:06.553 [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" = ?) [23946] 16:10:06.553 [debug] QUERY OK source="media_profiles" db=0.3ms 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] 16:10:06.554 [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 [] 16:10:06.554 [debug] QUERY OK source="settings" db=0.2ms idle=2.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:10:06.554 [debug] Running yt-dlp command for action: get_downloadable_status 16:10:06.571 [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 [] 16:10:06.571 [debug] QUERY OK source="settings" db=0.1ms idle=18.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:10:06.571 [debug] QUERY OK source="settings" db=0.1ms 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 [] 16:10:06.572 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/fL-99vJNHTE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/6c/18/6c187b715974e2fb99701ae224de8d071e2c91d285314e07a5f800dd4b071a2e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:10:09.460 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/fL-99vJNHTE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/6c/18/6c187b715974e2fb99701ae224de8d071e2c91d285314e07a5f800dd4b071a2e.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: [youtube] fL-99vJNHTE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] fL-99vJNHTE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 16:10:09.461 [debug] Running yt-dlp command for action: download 16:10:09.461 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1740.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:10:09.461 [debug] QUERY OK source="settings" db=0.1ms idle=1741.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:10:09.462 [debug] QUERY OK source="settings" db=0.2ms idle=1741.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:10:09.462 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/fL-99vJNHTE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/f9/a3/f9a350c068231692d2c1b1c4b666c1d97e4fd53d38a63a5a176c499db1730407.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:10:12.866 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/fL-99vJNHTE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/f9/a3/f9a350c068231692d2c1b1c4b666c1d97e4fd53d38a63a5a176c499db1730407.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 WARNING: [youtube] fL-99vJNHTE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] fL-99vJNHTE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 16:10:12.866 [error] yt-dlp download error for media item #23946: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] fL-99vJNHTE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] fL-99vJNHTE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 16:10:12.867 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23946},"id":7365,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6316401,"event":"job:exception","queue_time":629740,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:10:17.630 [info] {"source":"oban","duration":1177,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:10:47.631 [info] {"source":"oban","duration":676,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:11:00.267 [info] {"source":"oban","duration":535,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:11:17.633 [info] {"source":"oban","duration":1039,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:11:47.635 [info] {"source":"oban","duration":1492,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:12:00.269 [info] {"source":"oban","duration":626,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:12:17.638 [info] {"source":"oban","duration":1200,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:12:47.639 [info] {"source":"oban","duration":813,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:13:00.270 [info] {"source":"oban","duration":480,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:13:17.641 [info] {"source":"oban","duration":1132,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:13:47.644 [info] {"source":"oban","duration":1757,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:14:00.272 [info] {"source":"oban","duration":423,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:14:17.647 [info] {"source":"oban","duration":1086,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:14:47.649 [info] {"source":"oban","duration":1271,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:15:00.274 [info] {"source":"oban","duration":508,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:15:17.651 [info] {"source":"oban","duration":968,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:15:47.653 [info] {"source":"oban","duration":951,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:15:51.267 [info] {"args":{"id":23985},"id":7374,"meta":{},"system_time":1766506551267611011,"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"]} 16:15:51.268 [debug] QUERY OK source="media_items" db=0.1ms idle=547.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [23985] 16:15:51.268 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:15:51.268 [debug] QUERY OK source="sources" db=0.1ms idle=548.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 16:15:51.269 [debug] QUERY OK source="media_profiles" db=0.1ms idle=548.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] 16:15:51.269 [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 [23985] 16:15:51.270 [debug] QUERY OK source="media_metadata" db=0.1ms idle=2.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [23985] 16:15:51.270 [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:15:51.271 [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 [] 16:15:51.271 [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 [] 16:15:51.271 [debug] Running yt-dlp command for action: get_downloadable_status 16:15:51.272 [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 [] 16:15:51.272 [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:15:51.272 [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 [] 16:15:51.272 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/v6QiqXig8p8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/68/90/68907153610a6ba25657157c54af8b620d8b5819c80311e1108cf59880e22526.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:15:54.377 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/v6QiqXig8p8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/68/90/68907153610a6ba25657157c54af8b620d8b5819c80311e1108cf59880e22526.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: [youtube] v6QiqXig8p8: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] v6QiqXig8p8: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 16:15:54.378 [debug] Running yt-dlp command for action: download 16:15:54.378 [debug] QUERY OK source="settings" db=0.3ms idle=1657.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:15:54.379 [debug] QUERY OK source="settings" db=0.3ms idle=1658.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:15:54.379 [debug] QUERY OK source="settings" db=0.2ms idle=1659.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:15:54.380 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/v6QiqXig8p8 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/a8/9f/a89f95487ffb36cd190fe89d035c02fa75d7836b1f8abd457a93462626dd8702.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:15:57.670 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/v6QiqXig8p8 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/a8/9f/a89f95487ffb36cd190fe89d035c02fa75d7836b1f8abd457a93462626dd8702.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 WARNING: [youtube] v6QiqXig8p8: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] v6QiqXig8p8: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 16:15:57.670 [error] yt-dlp download error for media item #23985: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] v6QiqXig8p8: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] v6QiqXig8p8: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 16:15:57.671 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23985},"id":7374,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6403349,"event":"job:exception","queue_time":720634,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:16:00.275 [info] {"source":"oban","duration":361,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:16:17.655 [info] {"source":"oban","duration":1257,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:16:47.658 [info] {"source":"oban","duration":1888,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:17:00.276 [info] {"source":"oban","duration":396,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:17:17.661 [info] {"source":"oban","duration":1602,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:17:47.662 [info] {"source":"oban","duration":1034,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:18:00.278 [info] {"source":"oban","duration":691,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:18:17.664 [info] {"source":"oban","duration":1438,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:18:47.666 [info] {"source":"oban","duration":1359,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:19:00.279 [info] {"source":"oban","duration":309,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:19:17.668 [info] {"source":"oban","duration":969,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:19:47.670 [info] {"source":"oban","duration":1135,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:20:00.281 [info] {"source":"oban","duration":704,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:20:17.672 [info] {"source":"oban","duration":842,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:20:47.674 [info] {"source":"oban","duration":1290,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:20:55.906 [info] {"args":{"id":23991},"id":7377,"meta":{},"system_time":1766506855905934802,"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"]} 16:20:55.906 [debug] QUERY OK source="media_items" db=0.2ms idle=1185.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" = ?) [23991] 16:20:55.906 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:20:55.907 [debug] QUERY OK source="sources" db=0.2ms idle=1186.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" = ?) [8] 16:20:55.907 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1010.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] 16:20:55.907 [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 [23991] 16:20:55.918 [debug] QUERY OK source="media_metadata" db=0.1ms idle=12.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" = ?) [23991] 16:20:55.918 [debug] QUERY OK source="media_profiles" db=0.1ms idle=11.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 16:20:55.919 [debug] QUERY OK source="settings" db=0.1ms idle=11.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:20:55.919 [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 [] 16:20:55.919 [debug] Running yt-dlp command for action: get_downloadable_status 16:20:55.929 [debug] QUERY OK source="settings" db=0.1ms idle=21.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:20:55.929 [debug] QUERY OK source="settings" db=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 [] 16:20:55.930 [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 [] 16:20:55.930 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/BX5o0-gPP_c --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/07/bd/07bd82d702a15de454567137412eb9288b884b4d43a0bb87ab394ac3de039af8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:20:58.696 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/BX5o0-gPP_c --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/07/bd/07bd82d702a15de454567137412eb9288b884b4d43a0bb87ab394ac3de039af8.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: [youtube] BX5o0-gPP_c: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] BX5o0-gPP_c: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 16:20:58.697 [debug] Running yt-dlp command for action: download 16:20:58.697 [debug] QUERY OK source="settings" db=0.2ms idle=976.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:20:58.698 [debug] QUERY OK source="settings" db=0.1ms idle=977.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:20:58.698 [debug] QUERY OK source="settings" db=0.1ms idle=977.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:20:58.698 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/BX5o0-gPP_c --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/6a/93/6a93100bfcb732c24264d6ed827e6e25810e8ae5d6720e89c9aee5367bf2948e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:21:00.282 [info] {"source":"oban","duration":641,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:21:01.778 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/BX5o0-gPP_c --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/6a/93/6a93100bfcb732c24264d6ed827e6e25810e8ae5d6720e89c9aee5367bf2948e.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 WARNING: [youtube] BX5o0-gPP_c: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] BX5o0-gPP_c: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 16:21:01.778 [error] yt-dlp download error for media item #23991: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] BX5o0-gPP_c: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] BX5o0-gPP_c: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 16:21:01.780 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23991},"id":7377,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":5873262,"event":"job:exception","queue_time":411079,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:21:13.947 [info] {"args":{"id":23993},"id":7378,"meta":{},"system_time":1766506873946996441,"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"]} 16:21:13.947 [debug] QUERY OK source="media_items" db=0.2ms idle=226.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" = ?) [23993] 16:21:13.947 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:21:13.948 [debug] QUERY OK source="sources" db=0.2ms idle=227.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 16:21:13.948 [debug] QUERY OK source="media_profiles" db=0.3ms idle=227.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:21:13.949 [debug] QUERY OK source="media_items" db=0.3ms 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 [23993] 16:21:13.998 [debug] QUERY OK source="media_metadata" db=0.2ms idle=51.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" = ?) [23993] 16:21:13.998 [debug] QUERY OK source="media_profiles" db=0.3ms idle=50.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] 16:21:13.999 [debug] QUERY OK source="settings" db=0.2ms 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 [] 16:21:13.999 [debug] QUERY OK source="settings" db=0.1ms idle=50.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:21:14.000 [debug] Running yt-dlp command for action: get_downloadable_status 16:21:14.000 [debug] QUERY OK source="settings" db=0.1ms idle=51.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:21:14.000 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:21:14.001 [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:21:14.001 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/wh_tRKtW76Y --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d9/43/d943a93f611c714bcc41ed03d8cee3c2b50e594cc99a81905e9f598c665e27f6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:21:16.711 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/wh_tRKtW76Y --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d9/43/d943a93f611c714bcc41ed03d8cee3c2b50e594cc99a81905e9f598c665e27f6.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: [youtube] wh_tRKtW76Y: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] wh_tRKtW76Y: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 16:21:16.711 [debug] Running yt-dlp command for action: download 16:21:16.712 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=991.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:21:16.714 [debug] QUERY OK source="settings" db=1.0ms queue=0.2ms idle=992.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:21:16.714 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=993.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:21:16.716 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/wh_tRKtW76Y --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/dd/47/dd477b2ecd02583e556fa7b329dd8ff5d085735f1bf0cb5c32ab0c0011def426.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:21:17.676 [info] {"source":"oban","duration":1020,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:21:20.117 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/wh_tRKtW76Y --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/dd/47/dd477b2ecd02583e556fa7b329dd8ff5d085735f1bf0cb5c32ab0c0011def426.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 WARNING: [youtube] wh_tRKtW76Y: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] wh_tRKtW76Y: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 16:21:20.118 [error] yt-dlp download error for media item #23993: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] wh_tRKtW76Y: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] wh_tRKtW76Y: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 16:21:20.118 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23993},"id":7378,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6171228,"event":"job:exception","queue_time":676635,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:21:47.678 [info] {"source":"oban","duration":997,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:22:00.283 [info] {"source":"oban","duration":327,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:22:15.071 [info] {"args":{"id":24418},"id":7388,"meta":{},"system_time":1766506935071501700,"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"]} 16:22:15.072 [debug] QUERY OK source="media_items" db=0.3ms idle=1350.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" = ?) [24418] 16:22:15.072 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:22:15.072 [debug] QUERY OK source="sources" db=0.2ms idle=1350.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 16:22:15.073 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1010.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] 16:22:15.073 [debug] QUERY OK source="media_items" db=0.2ms 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 [24418] 16:22:15.074 [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" = ?) [24418] 16:22:15.074 [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] 16:22:15.074 [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 [] 16:22:15.075 [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 [] 16:22:15.075 [debug] Running yt-dlp command for action: get_downloadable_status 16:22:15.076 [debug] QUERY OK source="settings" db=0.1ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:22:15.076 [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 [] 16:22:15.076 [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 [] 16:22:15.077 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=hTM1yibhP9s --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/bb/a7/bba7b9a7ac1bf44eacf819aaeb8a3511352b484743e3c5b58770d7daeb07fb89.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:22:17.680 [info] {"source":"oban","duration":1305,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:22:18.158 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=hTM1yibhP9s --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/bb/a7/bba7b9a7ac1bf44eacf819aaeb8a3511352b484743e3c5b58770d7daeb07fb89.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: [youtube] hTM1yibhP9s: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] hTM1yibhP9s: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 16:22:18.159 [debug] Running yt-dlp command for action: download 16:22:18.159 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=1435.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:22:18.159 [debug] QUERY OK source="settings" db=0.1ms idle=1436.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:22:18.160 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=1091.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:22:18.160 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=hTM1yibhP9s --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/7c/d6/7cd682be49c38f29a0bd2b64bf713a094761a4b5dadb4d65851ff0548a2b1ab7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:22:22.121 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=hTM1yibhP9s --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/7c/d6/7cd682be49c38f29a0bd2b64bf713a094761a4b5dadb4d65851ff0548a2b1ab7.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 WARNING: [youtube] hTM1yibhP9s: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] hTM1yibhP9s: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 16:22:22.122 [error] yt-dlp download error for media item #24418: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] hTM1yibhP9s: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] hTM1yibhP9s: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 16:22:22.123 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":24418},"id":7388,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":7050866,"event":"job:exception","queue_time":767860,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:22:47.682 [info] {"source":"oban","duration":1043,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:23:00.284 [info] {"source":"oban","duration":256,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:23:17.684 [info] {"source":"oban","duration":1024,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:23:19.217 [info] {"args":{"id":23989},"id":7376,"meta":{},"system_time":1766506999217518898,"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"]} 16:23:19.218 [debug] QUERY OK source="media_items" db=0.2ms idle=1321.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" = ?) [23989] 16:23:19.218 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:23:19.218 [debug] QUERY OK source="sources" db=0.1ms idle=1010.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 16:23:19.219 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=322.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] 16:23:19.219 [debug] QUERY OK source="media_items" db=0.2ms 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 [23989] 16:23:19.220 [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" = ?) [23989] 16:23:19.220 [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] 16:23:19.221 [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 [] 16:23:19.221 [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 [] 16:23:19.221 [debug] Running yt-dlp command for action: get_downloadable_status 16:23:19.222 [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 [] 16:23:19.222 [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 [] 16:23:19.223 [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 [] 16:23:19.223 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/cut3p_-Y7ik --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/fe/37/fe378d4cd8d53e91b6dedd512f7d42c1738e987d0396ff37fff49396cd6dc736.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:23:21.941 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/cut3p_-Y7ik --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/fe/37/fe378d4cd8d53e91b6dedd512f7d42c1738e987d0396ff37fff49396cd6dc736.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: [youtube] cut3p_-Y7ik: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] cut3p_-Y7ik: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 16:23:21.941 [debug] Running yt-dlp command for action: download 16:23:21.941 [debug] QUERY OK source="settings" db=0.3ms idle=1044.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:23:21.942 [debug] QUERY OK source="settings" db=0.1ms idle=1045.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:23:21.942 [debug] QUERY OK source="settings" db=0.2ms idle=1045.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:23:21.943 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/cut3p_-Y7ik --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/23/91/23912b9a77059d0bd3641a5436bf5cda6667b2d263abec221a4abae61e4b4a11.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:23:25.060 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/cut3p_-Y7ik --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/23/91/23912b9a77059d0bd3641a5436bf5cda6667b2d263abec221a4abae61e4b4a11.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 WARNING: [youtube] cut3p_-Y7ik: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] cut3p_-Y7ik: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 16:23:25.060 [error] yt-dlp download error for media item #23989: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] cut3p_-Y7ik: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] cut3p_-Y7ik: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 16:23:25.061 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23989},"id":7376,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":5843556,"event":"job:exception","queue_time":578025,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:23:47.686 [info] {"source":"oban","duration":1450,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:24:00.286 [info] {"source":"oban","duration":565,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:24:17.688 [info] {"source":"oban","duration":1405,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:24:39.389 [info] {"args":{"id":23897},"id":7359,"meta":{},"system_time":1766507079389808956,"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"]} 16:24:39.390 [debug] QUERY OK source="media_items" db=0.1ms idle=493.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" = ?) [23897] 16:24:39.390 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:24:39.390 [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" = ?) [8] 16:24:39.391 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=494.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:24:39.391 [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 [23897] 16:24:39.392 [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" = ?) [23897] 16:24:39.392 [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] 16:24:39.393 [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 [] 16:24:39.393 [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 [] 16:24:39.393 [debug] Running yt-dlp command for action: get_downloadable_status 16:24:39.394 [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 [] 16:24:39.394 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:24:39.394 [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:24:39.395 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gIeiwnnkWng --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f7/cc/f7cc1abfd1eb3f849051df9ff3190b19852c1b41ec453290a1c925ece25f2b5c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:24:42.409 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gIeiwnnkWng --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f7/cc/f7cc1abfd1eb3f849051df9ff3190b19852c1b41ec453290a1c925ece25f2b5c.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: [youtube] gIeiwnnkWng: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] gIeiwnnkWng: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 16:24:42.409 [debug] Running yt-dlp command for action: download 16:24:42.410 [debug] QUERY OK source="settings" db=0.2ms idle=1512.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:24:42.410 [debug] QUERY OK source="settings" db=0.1ms idle=1513.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:24:42.411 [debug] QUERY OK source="settings" db=0.1ms idle=1513.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:24:42.411 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gIeiwnnkWng --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/5f/78/5f7884cde9d15c9653a14227416df2b7e33a56ecdd70975d5421ae298ee7a49a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:24:45.608 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gIeiwnnkWng --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/5f/78/5f7884cde9d15c9653a14227416df2b7e33a56ecdd70975d5421ae298ee7a49a.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 WARNING: [youtube] gIeiwnnkWng: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] gIeiwnnkWng: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 16:24:45.608 [error] yt-dlp download error for media item #23897: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] gIeiwnnkWng: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] gIeiwnnkWng: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 16:24:45.609 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23897},"id":7359,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6219024,"event":"job:exception","queue_time":473181,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:24:47.690 [info] {"source":"oban","duration":1116,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:25:00.288 [info] {"source":"oban","duration":749,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:25:13.461 [info] {"args":{"id":23982},"id":7372,"meta":{},"system_time":1766507113461531834,"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"]} 16:25:13.461 [debug] QUERY OK source="media_items" db=0.1ms idle=563.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" = ?) [23982] 16:25:13.462 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:25:13.462 [debug] QUERY OK source="sources" db=0.1ms idle=564.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 16:25:13.462 [debug] QUERY OK source="media_profiles" db=0.1ms idle=564.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] 16:25:13.463 [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 [23982] 16:25:13.477 [debug] QUERY OK source="media_metadata" db=0.1ms idle=15.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" = ?) [23982] 16:25:13.477 [debug] QUERY OK source="media_profiles" db=0.1ms idle=15.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] 16:25:13.478 [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 [] 16:25:13.478 [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 [] 16:25:13.478 [debug] Running yt-dlp command for action: get_downloadable_status 16:25:13.485 [debug] QUERY OK source="settings" db=0.2ms idle=22.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:25:13.486 [debug] QUERY OK source="settings" db=0.3ms queue=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 [] 16:25:13.486 [debug] QUERY OK source="settings" db=0.1ms idle=8.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:25:13.486 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/DqQMMZVWiuI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/64/25/6425d78eb67d5dad3c08e8124d961bdd7abff81cdd00329af20f28c75996fe19.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:25:16.240 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/DqQMMZVWiuI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/64/25/6425d78eb67d5dad3c08e8124d961bdd7abff81cdd00329af20f28c75996fe19.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: [youtube] DqQMMZVWiuI: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] DqQMMZVWiuI: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 16:25:16.241 [debug] Running yt-dlp command for action: download 16:25:16.241 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=1344.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:25:16.242 [debug] QUERY OK source="settings" db=0.2ms idle=1344.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:25:16.242 [debug] QUERY OK source="settings" db=0.1ms idle=1345.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:25:16.242 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/DqQMMZVWiuI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/e0/0a/e00ab77b7b7694fd903a3ff9f365055d239f50b49017946ef9c3a5dfd6d05b28.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:25:17.692 [info] {"source":"oban","duration":1502,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:25:19.781 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/DqQMMZVWiuI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/e0/0a/e00ab77b7b7694fd903a3ff9f365055d239f50b49017946ef9c3a5dfd6d05b28.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 WARNING: [youtube] DqQMMZVWiuI: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] DqQMMZVWiuI: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 16:25:19.781 [error] yt-dlp download error for media item #23982: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] DqQMMZVWiuI: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] DqQMMZVWiuI: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 16:25:19.782 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23982},"id":7372,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6319853,"event":"job:exception","queue_time":925502,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:25:39.516 [info] {"args":{"id":24001},"id":7381,"meta":{},"system_time":1766507139516199276,"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"]} 16:25:39.516 [debug] QUERY OK source="media_items" db=0.2ms idle=618.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" = ?) [24001] 16:25:39.516 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:25:39.517 [debug] QUERY OK source="sources" db=0.1ms idle=618.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 16:25:39.517 [debug] QUERY OK source="media_profiles" db=0.1ms idle=619.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] 16:25:39.518 [debug] QUERY OK source="media_items" db=0.2ms 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 [24001] 16:25:39.518 [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" = ?) [24001] 16:25:39.519 [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] 16:25:39.519 [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 [] 16:25:39.520 [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 [] 16:25:39.520 [debug] Running yt-dlp command for action: get_downloadable_status 16:25:39.529 [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 [] 16:25:39.529 [debug] QUERY OK source="settings" db=0.1ms idle=10.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:25:39.529 [debug] QUERY OK source="settings" db=0.1ms idle=10.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:25:39.530 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/MozbAhlORls --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/6b/ab/6bab33abacd09947e8a4e7d70088c55064ae6bffd72854987145359cea42da1e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:25:42.290 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/MozbAhlORls --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/6b/ab/6bab33abacd09947e8a4e7d70088c55064ae6bffd72854987145359cea42da1e.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: [youtube] MozbAhlORls: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] MozbAhlORls: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 16:25:42.290 [debug] Running yt-dlp command for action: download 16:25:42.291 [debug] QUERY OK source="settings" db=0.2ms idle=1393.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:25:42.291 [debug] QUERY OK source="settings" db=0.1ms idle=1393.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:25:42.291 [debug] QUERY OK source="settings" db=0.1ms idle=1394.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:25:42.292 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/MozbAhlORls --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/d5/b9/d5b96b7db06b48f876ca24cbb1864cf2e87269d0fcc8ba08f8c4cd76b6f83daf.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:25:45.437 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/MozbAhlORls --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/d5/b9/d5b96b7db06b48f876ca24cbb1864cf2e87269d0fcc8ba08f8c4cd76b6f83daf.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 WARNING: [youtube] MozbAhlORls: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] MozbAhlORls: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 16:25:45.437 [error] yt-dlp download error for media item #24001: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] MozbAhlORls: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] MozbAhlORls: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 16:25:45.438 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":24001},"id":7381,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":5921509,"event":"job:exception","queue_time":279051,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:25:47.694 [info] {"source":"oban","duration":1574,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:26:00.289 [info] {"source":"oban","duration":538,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:26:17.697 [info] {"source":"oban","duration":1735,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:26:47.698 [info] {"source":"oban","duration":717,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:27:00.291 [info] {"source":"oban","duration":815,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:27:17.700 [info] {"source":"oban","duration":949,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:27:37.762 [info] {"args":{"id":24342},"id":7387,"meta":{},"system_time":1766507257762814609,"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"]} 16:27:37.763 [debug] QUERY OK source="media_items" db=0.2ms idle=863.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" = ?) [24342] 16:27:37.763 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:27:37.763 [debug] QUERY OK source="sources" db=0.1ms idle=864.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 16:27:37.764 [debug] QUERY OK source="media_profiles" db=0.1ms idle=864.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] 16:27:37.764 [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 [24342] 16:27:37.788 [debug] QUERY OK source="media_metadata" db=0.1ms idle=25.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" = ?) [24342] 16:27:37.788 [debug] QUERY OK source="media_profiles" db=0.1ms idle=25.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 16:27:37.789 [debug] QUERY OK source="settings" db=0.1ms idle=25.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:27:37.789 [debug] QUERY OK source="settings" db=0.1ms idle=25.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:27:37.790 [debug] Running yt-dlp command for action: get_downloadable_status 16:27:37.802 [debug] QUERY OK source="settings" db=0.1ms 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 [] 16:27:37.802 [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 [] 16:27:37.802 [debug] QUERY OK source="settings" db=0.1ms idle=13.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:27:37.802 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6-Qcvt_UjFo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/1b/24/1b24ea8f16d40dc8f49b3f3a57c5fef7d50de19c2e4d2fe2e21b59e7a7381880.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:27:40.916 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6-Qcvt_UjFo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/1b/24/1b24ea8f16d40dc8f49b3f3a57c5fef7d50de19c2e4d2fe2e21b59e7a7381880.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: [youtube] 6-Qcvt_UjFo: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 6-Qcvt_UjFo: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 16:27:40.916 [debug] Running yt-dlp command for action: download 16:27:40.917 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=155.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:27:40.917 [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 [] 16:27:40.917 [debug] QUERY OK source="settings" db=0.1ms 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 [] 16:27:40.918 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6-Qcvt_UjFo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/f8/0c/f80c3f78f4b29eb4be45b945dedc454422591c05e16fe2b194d45026a391ed40.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:27:44.728 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6-Qcvt_UjFo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/f8/0c/f80c3f78f4b29eb4be45b945dedc454422591c05e16fe2b194d45026a391ed40.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 WARNING: [youtube] 6-Qcvt_UjFo: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 6-Qcvt_UjFo: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 16:27:44.728 [error] yt-dlp download error for media item #24342: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] 6-Qcvt_UjFo: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] 6-Qcvt_UjFo: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 16:27:44.729 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":24342},"id":7387,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6965763,"event":"job:exception","queue_time":808406,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:27:47.702 [info] {"source":"oban","duration":1252,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:28:00.292 [info] {"source":"oban","duration":539,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:28:17.704 [info] {"source":"oban","duration":1118,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:28:47.707 [info] {"source":"oban","duration":1696,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:29:00.294 [info] {"source":"oban","duration":566,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:29:17.710 [info] {"source":"oban","duration":1508,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:29:47.712 [info] {"source":"oban","duration":1305,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:30:00.296 [info] {"source":"oban","duration":387,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:30:17.714 [info] {"source":"oban","duration":843,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:30:47.716 [info] {"source":"oban","duration":1170,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:31:00.298 [info] {"source":"oban","duration":381,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:31:17.718 [info] {"source":"oban","duration":908,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:31:36.245 [info] {"args":{"id":23995},"id":7379,"meta":{},"system_time":1766507496245582982,"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"]} 16:31:36.246 [debug] QUERY OK source="media_items" db=0.2ms idle=1345.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" = ?) [23995] 16:31:36.246 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:31:36.246 [debug] QUERY OK source="sources" db=0.1ms idle=1345.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 16:31:36.247 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=1011.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:31:36.247 [debug] QUERY OK source="media_items" db=0.3ms 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 [23995] 16:31:36.276 [debug] QUERY OK source="media_metadata" db=0.1ms queue=0.1ms idle=30.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" = ?) [23995] 16:31:36.277 [debug] QUERY OK source="media_profiles" db=0.1ms idle=30.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] 16:31:36.277 [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 [] 16:31:36.277 [debug] QUERY OK source="settings" db=0.1ms idle=30.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:31:36.278 [debug] Running yt-dlp command for action: get_downloadable_status 16:31:36.278 [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 [] 16:31:36.279 [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:31:36.279 [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:31:36.279 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/pERSp3mAH0M --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/52/9b/529b631c5bacdb614ab57a6629ec5bfc27ad07d702d817091db49c08c1790551.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:31:39.050 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/pERSp3mAH0M --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/52/9b/529b631c5bacdb614ab57a6629ec5bfc27ad07d702d817091db49c08c1790551.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: [youtube] pERSp3mAH0M: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] pERSp3mAH0M: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 16:31:39.050 [debug] Running yt-dlp command for action: download 16:31:39.051 [debug] QUERY OK source="settings" db=0.2ms idle=1150.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:31:39.051 [debug] QUERY OK source="settings" db=0.2ms idle=1150.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:31:39.051 [debug] QUERY OK source="settings" db=0.1ms idle=1151.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:31:39.052 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/pERSp3mAH0M --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/03/28/03288024ab6609aeb50cd812827c0046a5b406e6105eda3cb28e5455ad7116b6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:31:42.352 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/pERSp3mAH0M --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/03/28/03288024ab6609aeb50cd812827c0046a5b406e6105eda3cb28e5455ad7116b6.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 WARNING: [youtube] pERSp3mAH0M: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] pERSp3mAH0M: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 16:31:42.353 [error] yt-dlp download error for media item #23995: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] pERSp3mAH0M: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] pERSp3mAH0M: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 16:31:42.354 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23995},"id":7379,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6107658,"event":"job:exception","queue_time":986390,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:31:47.721 [info] {"source":"oban","duration":1775,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:32:00.300 [info] {"source":"oban","duration":715,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:32:17.723 [info] {"source":"oban","duration":994,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:32:47.725 [info] {"source":"oban","duration":1356,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:33:00.301 [info] {"source":"oban","duration":335,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:33:17.727 [info] {"source":"oban","duration":988,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:33:19.455 [info] {"args":{"id":23973},"id":7384,"meta":{},"system_time":1766507599455761045,"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"]} 16:33:19.456 [debug] QUERY OK source="media_items" db=0.1ms 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" = ?) [23973] 16:33:19.456 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:33:19.456 [debug] QUERY OK source="sources" db=0.1ms idle=556.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 16:33:19.457 [debug] QUERY OK source="media_profiles" db=0.1ms idle=556.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] 16:33:19.457 [debug] QUERY OK source="media_items" db=0.3ms 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 [23973] 16:33:19.479 [debug] QUERY OK source="media_metadata" db=0.1ms idle=23.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" = ?) [23973] 16:33:19.479 [debug] QUERY OK source="media_profiles" db=0.1ms idle=23.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:33:19.480 [debug] QUERY OK source="settings" db=0.1ms idle=23.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:33:19.480 [debug] QUERY OK source="settings" db=0.1ms idle=23.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:33:19.480 [debug] Running yt-dlp command for action: get_downloadable_status 16:33:19.481 [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 [] 16:33:19.481 [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 [] 16:33:19.481 [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 [] 16:33:19.481 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bwW1Kwbq6k8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/36/76/36768b2597c65d9c24bb658fbb6060c1e6e21b0abdb679b614c11e89be445549.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:33:22.647 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bwW1Kwbq6k8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/36/76/36768b2597c65d9c24bb658fbb6060c1e6e21b0abdb679b614c11e89be445549.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: [youtube] bwW1Kwbq6k8: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] bwW1Kwbq6k8: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 16:33:22.648 [debug] Running yt-dlp command for action: download 16:33:22.648 [debug] QUERY OK source="settings" db=0.3ms idle=1747.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:33:22.649 [debug] QUERY OK source="settings" db=0.2ms idle=1748.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:33:22.649 [debug] QUERY OK source="settings" db=0.1ms idle=1748.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:33:22.649 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bwW1Kwbq6k8 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ba/1c/ba1cb963e16f89dedcd239dae0a6277d6497d9418970bd220ebf98996106139a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:33:25.879 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bwW1Kwbq6k8 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ba/1c/ba1cb963e16f89dedcd239dae0a6277d6497d9418970bd220ebf98996106139a.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 WARNING: [youtube] bwW1Kwbq6k8: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] bwW1Kwbq6k8: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 16:33:25.879 [error] yt-dlp download error for media item #23973: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] bwW1Kwbq6k8: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] bwW1Kwbq6k8: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 16:33:25.880 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23973},"id":7384,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6423872,"event":"job:exception","queue_time":165016,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:33:47.730 [info] {"source":"oban","duration":1995,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:34:00.302 [info] {"source":"oban","duration":573,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:34:17.733 [info] {"source":"oban","duration":1637,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:34:43.782 [info] {"args":{"id":24163},"id":7385,"meta":{},"system_time":1766507683782110327,"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"]} 16:34:43.782 [debug] QUERY OK source="media_items" db=0.2ms idle=882.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" = ?) [24163] 16:34:43.782 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:34:43.783 [debug] QUERY OK source="sources" db=0.1ms idle=882.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" = ?) [9] 16:34:43.783 [debug] QUERY OK source="media_profiles" db=0.2ms idle=882.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:34:43.784 [debug] QUERY OK source="media_items" db=0.2ms idle=9.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 [24163] 16:34:43.799 [debug] QUERY OK source="media_metadata" db=0.1ms idle=17.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" = ?) [24163] 16:34:43.800 [debug] QUERY OK source="media_profiles" db=0.2ms idle=17.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] 16:34:43.800 [debug] QUERY OK source="settings" db=0.1ms 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 [] 16:34:43.801 [debug] QUERY OK source="settings" db=0.1ms idle=17.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:34:43.801 [debug] Running yt-dlp command for action: get_downloadable_status 16:34:43.801 [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 [] 16:34:43.802 [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 [] 16:34:43.802 [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 [] 16:34:43.802 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZRfC_M8d4a4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b7/53/b7539b5506248e82a51ffaeb677f9c5e1625c8f02fba0936841efb156f5f9dcf.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:34:46.695 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZRfC_M8d4a4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b7/53/b7539b5506248e82a51ffaeb677f9c5e1625c8f02fba0936841efb156f5f9dcf.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: [youtube] ZRfC_M8d4a4: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] ZRfC_M8d4a4: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 16:34:46.695 [debug] Running yt-dlp command for action: download 16:34:46.696 [debug] QUERY OK source="settings" db=0.3ms idle=1795.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:46.696 [debug] QUERY OK source="settings" db=0.2ms idle=1796.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:46.697 [debug] QUERY OK source="settings" db=0.1ms idle=1796.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:46.697 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZRfC_M8d4a4 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/fb/80/fb801fae26f869e01edea518789de98cc636991098692c3fa2b184f860666ead.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:34:47.734 [info] {"source":"oban","duration":1384,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:34:50.000 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZRfC_M8d4a4 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/fb/80/fb801fae26f869e01edea518789de98cc636991098692c3fa2b184f860666ead.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 WARNING: [youtube] ZRfC_M8d4a4: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] ZRfC_M8d4a4: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 16:34:50.000 [error] yt-dlp download error for media item #24163: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] ZRfC_M8d4a4: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] ZRfC_M8d4a4: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 16:34:50.001 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":24163},"id":7385,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6218922,"event":"job:exception","queue_time":257909,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:35:00.304 [info] {"source":"oban","duration":819,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:35:17.736 [info] {"source":"oban","duration":1088,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:35:47.739 [info] {"source":"oban","duration":1888,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:36:00.305 [info] {"source":"oban","duration":243,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:36:17.741 [info] {"source":"oban","duration":1068,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:36:27.999 [info] {"args":{"id":23915},"id":7363,"meta":{},"system_time":1766507787999161118,"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"]} 16:36:27.999 [debug] QUERY OK source="media_items" db=0.3ms idle=1009.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" = ?) [23915] 16:36:28.000 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:36:28.000 [debug] QUERY OK source="sources" db=0.2ms idle=79.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" = ?) [8] 16:36:28.000 [debug] QUERY OK source="media_profiles" db=0.2ms idle=80.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] 16:36:28.001 [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 [23915] 16:36:28.003 [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" = ?) [23915] 16:36:28.003 [debug] QUERY OK source="media_profiles" db=0.3ms idle=3.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 16:36:28.004 [debug] QUERY OK source="settings" db=0.3ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:36:28.005 [debug] QUERY OK source="settings" db=0.3ms queue=0.5ms 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 [] 16:36:28.007 [debug] Running yt-dlp command for action: get_downloadable_status 16:36:28.019 [debug] QUERY OK source="settings" db=0.1ms 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 [] 16:36:28.019 [debug] QUERY OK source="settings" db=0.1ms 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 [] 16:36:28.020 [debug] QUERY OK source="settings" db=0.1ms 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 [] 16:36:28.020 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=2E3Qk10EoFA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/2e/20/2e209042849b29a06c32083a7768984fffbd63526cbb1546ddd4725ff1b8260f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:36:30.883 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=2E3Qk10EoFA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/2e/20/2e209042849b29a06c32083a7768984fffbd63526cbb1546ddd4725ff1b8260f.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: [youtube] 2E3Qk10EoFA: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 2E3Qk10EoFA: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 16:36:30.884 [debug] Running yt-dlp command for action: download 16:36:30.886 [debug] QUERY OK source="settings" db=0.8ms queue=0.2ms idle=964.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:30.888 [debug] QUERY OK source="settings" db=1.9ms idle=965.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:30.889 [debug] QUERY OK source="settings" db=0.5ms queue=0.1ms idle=968.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:30.890 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=2E3Qk10EoFA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/38/42/384229bc7cb549981b543e9d4ed58d155cb9ec0cf0cf43ee4462dac99aa8c6be.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:36:34.269 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=2E3Qk10EoFA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/38/42/384229bc7cb549981b543e9d4ed58d155cb9ec0cf0cf43ee4462dac99aa8c6be.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 WARNING: [youtube] 2E3Qk10EoFA: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 2E3Qk10EoFA: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 16:36:34.269 [error] yt-dlp download error for media item #23915: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] 2E3Qk10EoFA: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] 2E3Qk10EoFA: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 16:36:34.270 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23915},"id":7363,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6270828,"event":"job:exception","queue_time":307424,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:36:47.743 [info] {"source":"oban","duration":1309,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:36:52.043 [info] {"args":{"id":24448},"id":7391,"meta":{},"system_time":1766507812043393856,"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"]} 16:36:52.044 [debug] QUERY OK source="media_items" db=0.2ms idle=123.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" = ?) [24448] 16:36:52.044 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:36:52.044 [debug] QUERY OK source="sources" db=0.2ms idle=123.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 16:36:52.045 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=124.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] 16:36:52.045 [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 [24448] 16:36:52.046 [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" = ?) [24448] 16:36:52.046 [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:36:52.047 [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 [] 16:36:52.047 [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 [] 16:36:52.048 [debug] Running yt-dlp command for action: get_downloadable_status 16:36:52.048 [debug] QUERY OK source="settings" db=0.1ms idle=3.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:36:52.049 [debug] QUERY OK source="settings" db=0.2ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:36:52.049 [debug] QUERY OK source="settings" db=0.1ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:36:52.049 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZpTn71P2mn0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/29/b2/29b209bb52a1e16d373d163ce96dd24933d4c7f6fd4bd284129c25148f45aad1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:36:54.990 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZpTn71P2mn0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/29/b2/29b209bb52a1e16d373d163ce96dd24933d4c7f6fd4bd284129c25148f45aad1.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: [youtube] ZpTn71P2mn0: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] ZpTn71P2mn0: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 16:36:54.991 [debug] Running yt-dlp command for action: download 16:36:54.991 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1070.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:54.991 [debug] QUERY OK source="settings" db=0.1ms idle=1071.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:54.992 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=1071.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:54.992 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZpTn71P2mn0 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/c3/f9/c3f9530df288ccd98a57ae3ba81b863fac20fa51568d40fe9f23e781ae0d41ee.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:36:58.343 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZpTn71P2mn0 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/c3/f9/c3f9530df288ccd98a57ae3ba81b863fac20fa51568d40fe9f23e781ae0d41ee.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 WARNING: [youtube] ZpTn71P2mn0: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] ZpTn71P2mn0: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 16:36:58.343 [error] yt-dlp download error for media item #24448: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] ZpTn71P2mn0: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] ZpTn71P2mn0: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 16:36:58.344 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":24448},"id":7391,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6300295,"event":"job:exception","queue_time":628973,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:37:00.306 [info] {"source":"oban","duration":485,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:37:17.746 [info] {"source":"oban","duration":1653,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:37:47.747 [info] {"source":"oban","duration":1208,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:38:00.308 [info] {"source":"oban","duration":435,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:38:17.749 [info] {"source":"oban","duration":1282,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:38:47.751 [info] {"source":"oban","duration":1177,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:39:00.309 [info] {"source":"oban","duration":244,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:39:17.753 [info] {"source":"oban","duration":791,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:39:47.756 [info] {"source":"oban","duration":1705,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:40:00.311 [info] {"source":"oban","duration":902,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:40:17.757 [info] {"source":"oban","duration":1219,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:40:36.733 [info] {"args":{"id":24458},"id":7392,"meta":{},"system_time":1766508036733363863,"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"]} 16:40:36.733 [debug] QUERY OK source="media_items" db=0.2ms idle=1812.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" = ?) [24458] 16:40:36.734 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:40:36.734 [debug] QUERY OK source="sources" db=0.2ms idle=1812.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" = ?) [9] 16:40:36.734 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1010.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:40:36.735 [debug] QUERY OK source="media_items" db=0.3ms 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 [24458] 16:40:36.762 [debug] QUERY OK source="media_metadata" db=0.5ms idle=28.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" = ?) [24458] 16:40:36.762 [debug] QUERY OK source="media_profiles" db=0.2ms idle=28.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 16:40:36.763 [debug] QUERY OK source="settings" db=0.1ms 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 [] 16:40:36.763 [debug] QUERY OK source="settings" db=0.1ms idle=28.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:40:36.763 [debug] Running yt-dlp command for action: get_downloadable_status 16:40:36.765 [debug] QUERY OK source="settings" db=0.2ms idle=29.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:40:36.765 [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 [] 16:40:36.765 [debug] QUERY OK source="settings" db=0.2ms idle=2.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:40:36.766 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=u_GVpZ79oZY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/6c/a8/6ca84658d4e0084a78770264b77c226dff8f62797132e7d49e8aa61799fca186.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:40:39.680 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=u_GVpZ79oZY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/6c/a8/6ca84658d4e0084a78770264b77c226dff8f62797132e7d49e8aa61799fca186.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: [youtube] u_GVpZ79oZY: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] u_GVpZ79oZY: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 16:40:39.681 [debug] Running yt-dlp command for action: download 16:40:39.681 [debug] QUERY OK source="settings" db=0.3ms idle=1759.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:40:39.682 [debug] QUERY OK source="settings" db=0.2ms idle=1760.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:40:39.682 [debug] QUERY OK source="settings" db=0.2ms idle=1760.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:40:39.682 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=u_GVpZ79oZY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ca/48/ca48886901f34120e4231974581115caa623add039c4b5a4bf8642f324516fe5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:40:43.117 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=u_GVpZ79oZY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ca/48/ca48886901f34120e4231974581115caa623add039c4b5a4bf8642f324516fe5.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 WARNING: [youtube] u_GVpZ79oZY: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] u_GVpZ79oZY: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 16:40:43.117 [error] yt-dlp download error for media item #24458: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] u_GVpZ79oZY: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] u_GVpZ79oZY: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 16:40:43.118 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":24458},"id":7392,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6384253,"event":"job:exception","queue_time":343663,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:40:47.759 [info] {"source":"oban","duration":860,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:41:00.313 [info] {"source":"oban","duration":1262,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:41:17.761 [info] {"source":"oban","duration":993,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:41:47.763 [info] {"source":"oban","duration":960,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:42:00.314 [info] {"source":"oban","duration":458,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:42:17.766 [info] {"source":"oban","duration":1664,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:42:47.769 [info] {"source":"oban","duration":1647,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:43:00.316 [info] {"source":"oban","duration":775,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:43:17.771 [info] {"source":"oban","duration":1559,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:43:47.774 [info] {"source":"oban","duration":1853,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:44:00.318 [info] {"source":"oban","duration":842,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:44:17.777 [info] {"source":"oban","duration":1900,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:44:47.779 [info] {"source":"oban","duration":1449,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:44:49.252 [info] {"args":{"id":23953},"id":7367,"meta":{},"system_time":1766508289252275764,"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"]} 16:44:49.253 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=331.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" = ?) [23953] 16:44:49.253 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:44:49.253 [debug] QUERY OK source="sources" db=0.2ms idle=332.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 16:44:49.254 [debug] QUERY OK source="media_profiles" db=0.1ms idle=332.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] 16:44:49.254 [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 [23953] 16:44:49.255 [debug] QUERY OK source="media_metadata" db=0.1ms 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" = ?) [23953] 16:44:49.255 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=2.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 16:44:49.256 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:44:49.256 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:44:49.257 [debug] Running yt-dlp command for action: get_downloadable_status 16:44:49.273 [debug] QUERY OK source="settings" db=0.2ms idle=18.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:44:49.273 [debug] QUERY OK source="settings" db=0.2ms idle=17.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:44:49.274 [debug] QUERY OK source="settings" db=0.2ms 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 [] 16:44:49.274 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/4qTZ8p4o_fY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/6c/6c/6c6c7bbbf23dd6e86208e3e9aefa28fadf10c0b4e3d91ff39cc43a91cc07ed94.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:44:51.993 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/4qTZ8p4o_fY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/6c/6c/6c6c7bbbf23dd6e86208e3e9aefa28fadf10c0b4e3d91ff39cc43a91cc07ed94.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: [youtube] 4qTZ8p4o_fY: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 4qTZ8p4o_fY: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 16:44:51.993 [debug] Running yt-dlp command for action: download 16:44:51.994 [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 [] 16:44:51.994 [debug] QUERY OK source="settings" db=0.1ms idle=1073.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:44:51.995 [debug] QUERY OK source="settings" db=0.1ms idle=1073.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:44:51.995 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/4qTZ8p4o_fY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/e5/8a/e58a6bb42bfa5d35018ee83789c5352c293b9965516635a6e6d6542a974f229e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:44:55.394 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/4qTZ8p4o_fY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/e5/8a/e58a6bb42bfa5d35018ee83789c5352c293b9965516635a6e6d6542a974f229e.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 WARNING: [youtube] 4qTZ8p4o_fY: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 4qTZ8p4o_fY: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 16:44:55.394 [error] yt-dlp download error for media item #23953: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] 4qTZ8p4o_fY: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] 4qTZ8p4o_fY: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 16:44:55.395 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23953},"id":7367,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6142315,"event":"job:exception","queue_time":118876,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:45:00.320 [info] {"source":"oban","duration":804,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:45:17.782 [info] {"source":"oban","duration":1694,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:45:47.784 [info] {"source":"oban","duration":1462,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:46:00.321 [info] {"source":"oban","duration":381,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:46:17.786 [info] {"source":"oban","duration":1468,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:46:47.789 [info] {"source":"oban","duration":1785,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:47:00.322 [info] {"source":"oban","duration":443,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:47:17.791 [info] {"source":"oban","duration":883,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:47:47.794 [info] {"source":"oban","duration":1703,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:48:00.324 [info] {"source":"oban","duration":928,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:48:17.796 [info] {"source":"oban","duration":1321,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:48:47.797 [info] {"source":"oban","duration":677,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:49:00.325 [info] {"source":"oban","duration":359,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:49:17.799 [info] {"source":"oban","duration":774,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:49:47.801 [info] {"source":"oban","duration":948,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:50:00.326 [info] {"source":"oban","duration":521,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:50:17.803 [info] {"source":"oban","duration":1311,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:50:47.805 [info] {"source":"oban","duration":1164,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:51:00.327 [info] {"source":"oban","duration":193,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:51:17.808 [info] {"source":"oban","duration":1954,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:51:47.810 [info] {"source":"oban","duration":925,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:52:00.328 [info] {"source":"oban","duration":441,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:52:17.812 [info] {"source":"oban","duration":1227,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:52:47.814 [info] {"source":"oban","duration":856,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:53:00.329 [info] {"source":"oban","duration":290,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:53:17.816 [info] {"source":"oban","duration":864,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:53:47.818 [info] {"source":"oban","duration":906,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:53:53.481 [info] {"args":{"id":24428},"id":7389,"meta":{},"system_time":1766508833481074045,"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"]} 16:53:53.481 [debug] QUERY OK source="media_items" db=0.2ms idle=314.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" = ?) [24428] 16:53:53.481 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:53:53.482 [debug] QUERY OK source="sources" db=0.1ms idle=315.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" = ?) [9] 16:53:53.482 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=315.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] 16:53:53.483 [debug] QUERY OK source="media_items" db=0.3ms 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 [24428] 16:53:53.484 [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" = ?) [24428] 16:53:53.484 [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] 16:53:53.485 [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 [] 16:53:53.485 [debug] QUERY OK source="settings" db=0.1ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:53:53.485 [debug] Running yt-dlp command for action: get_downloadable_status 16:53:53.486 [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 [] 16:53:53.486 [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 [] 16:53:53.487 [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 [] 16:53:53.487 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=c0A_62sgbms --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/bf/1c/bf1c5d27a90c338d525dfab91d638d3620864442b96e8a4acf58925bf1b5e3c4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:53:56.232 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=c0A_62sgbms --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/bf/1c/bf1c5d27a90c338d525dfab91d638d3620864442b96e8a4acf58925bf1b5e3c4.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: [youtube] c0A_62sgbms: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] c0A_62sgbms: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 16:53:56.232 [debug] Running yt-dlp command for action: download 16:53:56.233 [debug] QUERY OK source="settings" db=0.2ms idle=1065.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:56.233 [debug] QUERY OK source="settings" db=0.1ms idle=1065.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:56.233 [debug] QUERY OK source="settings" db=0.1ms idle=1065.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:56.234 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=c0A_62sgbms --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/a0/3a/a03a979f1a3634699e19269e8d636a390d915b720b594f6964957d4070611633.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:53:59.858 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=c0A_62sgbms --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/a0/3a/a03a979f1a3634699e19269e8d636a390d915b720b594f6964957d4070611633.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 WARNING: [youtube] c0A_62sgbms: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] c0A_62sgbms: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 16:53:59.858 [error] yt-dlp download error for media item #24428: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] c0A_62sgbms: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] c0A_62sgbms: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 16:53:59.870 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":24428},"id":7389,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6377997,"event":"job:exception","queue_time":397724,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:54:00.330 [info] {"source":"oban","duration":383,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:54:17.820 [info] {"source":"oban","duration":1483,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:54:47.822 [info] {"source":"oban","duration":1364,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:55:00.332 [info] {"source":"oban","duration":742,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:55:17.824 [info] {"source":"oban","duration":1585,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:55:47.826 [info] {"source":"oban","duration":982,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:56:00.334 [info] {"source":"oban","duration":721,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:56:17.828 [info] {"source":"oban","duration":832,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:56:47.830 [info] {"source":"oban","duration":1293,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:57:00.335 [info] {"source":"oban","duration":414,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:57:17.832 [info] {"source":"oban","duration":1020,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:57:47.835 [info] {"source":"oban","duration":1491,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:58:00.336 [info] {"source":"oban","duration":560,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:58:17.837 [info] {"source":"oban","duration":971,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:58:47.840 [info] {"source":"oban","duration":1471,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:59:00.337 [info] {"source":"oban","duration":241,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:59:17.842 [info] {"source":"oban","duration":1365,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:59:47.844 [info] {"source":"oban","duration":1541,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:00:00.339 [info] {"source":"oban","duration":415,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:00:17.846 [info] {"source":"oban","duration":1212,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:00:47.848 [info] {"source":"oban","duration":914,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:01:00.341 [info] {"source":"oban","duration":753,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:01:17.850 [info] {"source":"oban","duration":763,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:01:47.852 [info] {"source":"oban","duration":1162,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:02:00.343 [info] {"source":"oban","duration":699,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:02:17.854 [info] {"source":"oban","duration":1601,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:02:47.857 [info] {"source":"oban","duration":2089,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:03:00.345 [info] {"source":"oban","duration":930,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:03:17.859 [info] {"source":"oban","duration":1260,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:03:47.861 [info] {"source":"oban","duration":1257,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:04:00.347 [info] {"source":"oban","duration":705,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:04:17.862 [info] {"source":"oban","duration":673,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:04:47.864 [info] {"source":"oban","duration":1111,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:05:00.348 [info] {"source":"oban","duration":420,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:05:17.866 [info] {"source":"oban","duration":1044,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:05:47.868 [info] {"source":"oban","duration":1314,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:06:00.350 [info] {"source":"oban","duration":683,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:06:17.870 [info] {"source":"oban","duration":872,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:06:47.872 [info] {"source":"oban","duration":873,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:07:00.352 [info] {"source":"oban","duration":568,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:07:17.874 [info] {"source":"oban","duration":845,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:07:33.222 [info] {"args":{"id":24446},"id":7390,"meta":{},"system_time":1766509653222191164,"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"]} 17:07:33.222 [debug] QUERY OK source="media_items" db=0.1ms idle=9.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" = ?) [24446] 17:07:33.222 [info] User scripts lifecyle file either not present or is empty. Skipping. 17:07:33.223 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [9] 17:07:33.223 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=10.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] 17:07:33.224 [debug] QUERY OK source="media_items" db=0.3ms 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 [24446] 17:07:33.225 [debug] QUERY OK source="media_metadata" db=0.1ms idle=2.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" = ?) [24446] 17:07:33.225 [debug] QUERY OK source="media_profiles" db=0.2ms 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] 17:07:33.226 [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 [] 17:07:33.226 [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 [] 17:07:33.226 [debug] Running yt-dlp command for action: get_downloadable_status 17:07:33.227 [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 [] 17:07:33.227 [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 [] 17:07:33.227 [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:07:33.228 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4D69LDs_izI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d6/14/d6148c7138550f341d26ca71c959231c70064c0ed6b9d43b57949ed8f6cce68f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 17:07:36.103 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4D69LDs_izI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d6/14/d6148c7138550f341d26ca71c959231c70064c0ed6b9d43b57949ed8f6cce68f.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 17:07:36.103 [debug] Running yt-dlp command for action: download 17:07:36.105 [debug] QUERY OK source="settings" db=0.7ms queue=0.1ms idle=892.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:07:36.106 [debug] QUERY OK source="settings" db=0.2ms idle=893.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:07:36.106 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=893.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 17:07:36.107 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4D69LDs_izI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b7/d7/b7d74ca6e2c84d75be6db1685e407552765bbbba60a249ecdd091dd3ff229f81.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 17:07:39.595 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4D69LDs_izI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/b7/d7/b7d74ca6e2c84d75be6db1685e407552765bbbba60a249ecdd091dd3ff229f81.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 WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 17:07:39.595 [error] yt-dlp download error for media item #24446: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 17:07:39.596 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":24446},"id":7390,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6373678,"event":"job:exception","queue_time":500023,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 17:07:47.877 [info] {"source":"oban","duration":1655,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:08:00.353 [info] {"source":"oban","duration":243,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:08:17.879 [info] {"source":"oban","duration":1208,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:08:47.881 [info] {"source":"oban","duration":964,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:09:00.354 [info] {"source":"oban","duration":284,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:09:17.883 [info] {"source":"oban","duration":919,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:09:47.885 [info] {"source":"oban","duration":866,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:10:00.356 [info] {"source":"oban","duration":807,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:10:17.887 [info] {"source":"oban","duration":1441,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:10:47.889 [info] {"source":"oban","duration":805,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:11:00.358 [info] {"source":"oban","duration":618,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:11:17.891 [info] {"source":"oban","duration":1554,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:11:47.893 [info] {"source":"oban","duration":863,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:12:00.360 [info] {"source":"oban","duration":969,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:12:17.896 [info] {"source":"oban","duration":1597,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:12:47.898 [info] {"source":"oban","duration":1246,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:13:00.362 [info] {"source":"oban","duration":712,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:13:17.900 [info] {"source":"oban","duration":1550,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:13:47.902 [info] {"source":"oban","duration":1279,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:14:00.364 [info] {"source":"oban","duration":786,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:14:17.904 [info] {"source":"oban","duration":1026,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:14:47.906 [info] {"source":"oban","duration":1422,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:15:00.365 [info] {"source":"oban","duration":310,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:15:17.908 [info] {"source":"oban","duration":1241,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:15:47.910 [info] {"source":"oban","duration":1560,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:16:00.367 [info] {"source":"oban","duration":1278,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:16:17.912 [info] {"source":"oban","duration":1541,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:16:47.914 [info] {"source":"oban","duration":1220,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:17:00.368 [info] {"source":"oban","duration":339,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:17:17.916 [info] {"source":"oban","duration":740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:17:47.917 [info] {"source":"oban","duration":864,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:18:00.370 [info] {"source":"oban","duration":836,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:18:17.919 [info] {"source":"oban","duration":1619,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:18:33.685 [info] GET / 17:18:33.685 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 17:18:33.686 [debug] QUERY OK source="settings" db=0.2ms idle=759.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:18:33.686 [debug] QUERY OK source="media_profiles" db=0.1ms idle=467.6ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 17:18:33.686 [debug] QUERY OK source="sources" db=0.1ms idle=467.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 17:18:33.702 [debug] QUERY OK source="media_items" db=15.6ms idle=468.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 17:18:33.705 [debug] QUERY OK source="media_items" db=2.6ms idle=484.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 17:18:33.706 [debug] QUERY OK source="settings" db=0.1ms idle=19.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 17:18:33.706 [debug] QUERY OK source="settings" db=0.1ms idle=19.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 17:18:33.707 [debug] QUERY OK source="settings" db=0.2ms 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 [] 17:18:33.708 [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", 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"] 17:18:33.710 [debug] QUERY OK source="media_items" db=0.7ms 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 (m0."media_filepath" IS NULL)) [] 17:18:33.710 [debug] QUERY OK source="media_items" db=0.4ms 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] 17:18:33.711 [debug] QUERY OK source="sources" db=0.3ms 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 (?,?,?)) [3, 2, 7] 17:18:33.722 [debug] QUERY OK source="media_items" db=10.0ms 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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 17:18:33.723 [debug] QUERY OK source="media_items" db=0.6ms idle=13.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] 17:18:33.723 [debug] QUERY OK source="sources" db=0.1ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 17:18:33.725 [info] Sent 200 in 39ms 17:18:39.501 [info] GET /sources/7/media/28489 17:18:39.502 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "28489", "source_id" => "7"} Pipelines: [:browser] 17:18:39.502 [debug] QUERY OK source="media_items" db=0.1ms idle=563.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [28489] 17:18:39.503 [debug] QUERY OK source="tasks" db=0.2ms idle=284.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" [28489] 17:18:39.503 [debug] QUERY OK source="sources" db=0.2ms idle=284.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] 17:18:39.503 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=284.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" = ?) [7342] 17:18:39.504 [debug] QUERY OK source="settings" db=0.3ms idle=284.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 17:18:39.504 [debug] QUERY OK source="settings" db=0.3ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 17:18:39.505 [debug] QUERY OK source="settings" db=0.2ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 17:18:39.506 [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] 17:18:39.507 [info] Sent 200 in 6ms 17:18:41.564 [info] GET /sources/4/media/28910 17:18:41.565 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "28910", "source_id" => "4"} Pipelines: [:browser] 17:18:41.565 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=622.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" = ?) [28910] 17:18:41.566 [debug] QUERY OK source="tasks" db=0.2ms idle=347.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" [28910] 17:18:41.566 [debug] QUERY OK source="sources" db=0.2ms idle=347.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 17:18:41.566 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=348.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" = ?) [7397] 17:18:41.567 [debug] QUERY OK source="settings" db=0.1ms idle=348.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:18:41.567 [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 [] 17:18:41.568 [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 [] 17:18:41.568 [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] 17:18:41.569 [info] Sent 200 in 5ms 17:18:43.359 [info] GET /sources/7/media/29046 17:18:43.359 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "29046", "source_id" => "7"} Pipelines: [:browser] 17:18:43.359 [debug] QUERY OK source="media_items" db=0.2ms idle=411.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" = ?) [29046] 17:18:43.360 [debug] QUERY OK source="sources" db=0.2ms idle=141.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 17:18:43.360 [debug] QUERY OK source="tasks" db=0.1ms idle=141.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" [29046] 17:18:43.360 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=142.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" = ?) [7405] 17:18:43.361 [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 [] 17:18:43.361 [debug] QUERY OK source="settings" db=0.2ms idle=1.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 17:18:43.361 [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 [] 17:18:43.362 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=1.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 17:18:43.364 [info] Sent 200 in 5ms 17:18:46.548 [info] GET /sources/7/media/28489 17:18:46.548 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "28489", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 17:18:46.549 [debug] QUERY OK source="media_items" db=0.2ms idle=1330.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" = ?) [28489] 17:18:46.550 [debug] QUERY OK source="tasks" db=0.2ms idle=1331.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" [28489] 17:18:46.550 [debug] QUERY OK source="sources" db=0.4ms idle=1331.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] 17:18:46.550 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=1331.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" = ?) [7342] 17:18:46.551 [debug] QUERY OK source="settings" db=0.1ms idle=597.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:18:46.551 [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 [] 17:18:46.551 [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:18:46.552 [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:18:46.554 [info] Sent 200 in 5ms 17:18:47.921 [info] {"source":"oban","duration":930,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:18:48.103 [info] GET /media/595c0532-98c0-4e0c-a53d-0fda911cba10/stream 17:18:48.103 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "595c0532-98c0-4e0c-a53d-0fda911cba10", "v" => "1766307129"} Pipelines: [:maybe_basic_auth] 17:18:48.104 [debug] QUERY OK source="media_items" db=0.3ms idle=1551.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" = ?) ["595c0532-98c0-4e0c-a53d-0fda911cba10"] 17:18:48.104 [debug] Invalid range request for media item: 595c0532-98c0-4e0c-a53d-0fda911cba10 - serving full file 17:18:48.104 [info] Sent 200 in 1ms 17:18:49.478 [info] GET /sources/7/media/28489/force_download 17:18:49.479 [debug] QUERY OK source="settings" db=0.1ms idle=1260.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:18:49.479 [debug] QUERY OK source="settings" db=0.1ms idle=1260.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:18:49.479 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 17:18:49.479 [error] #PID<0.209436.0> running PinchflatWeb.Endpoint (connection #PID<0.209435.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /sources/7/media/28489/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/28489/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.209435.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/28489/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 45684}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbDBFbHVhM0M0SG9YdUtBSDZyVjdvb1Z1.zoj7VizfmhafO9O_iTuxrdjgmr1IeVW6Kyfl23aQTWw", "from" => "gptbot(at)openai.com", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-openai-host-hash" => "393006065", "x-real-ip" => "74.7.227.130" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbDBFbHVhM0M0SG9YdUtBSDZyVjdvb1Z1.zoj7VizfmhafO9O_iTuxrdjgmr1IeVW6Kyfl23aQTWw" }, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.209436.0>, params: %{}, path_info: ["sources", "7", "media", "28489", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbDBFbHVhM0M0SG9YdUtBSDZyVjdvb1Z1.zoj7VizfmhafO9O_iTuxrdjgmr1IeVW6Kyfl23aQTWw" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbDBFbHVhM0M0SG9YdUtBSDZyVjdvb1Z1.zoj7VizfmhafO9O_iTuxrdjgmr1IeVW6Kyfl23aQTWw"}, {"from", "gptbot(at)openai.com"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "393006065"}, {"x-real-ip", "74.7.227.130"} ], request_path: "/sources/7/media/28489/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIPnyQickA7H0KMAGVXC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.209435.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/28489/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 45684}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbDBFbHVhM0M0SG9YdUtBSDZyVjdvb1Z1.zoj7VizfmhafO9O_iTuxrdjgmr1IeVW6Kyfl23aQTWw", "from" => "gptbot(at)openai.com", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-openai-host-hash" => "393006065", "x-real-ip" => "74.7.227.130" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/28489/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.209435.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/28489/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 45684}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbDBFbHVhM0M0SG9YdUtBSDZyVjdvb1Z1.zoj7VizfmhafO9O_iTuxrdjgmr1IeVW6Kyfl23aQTWw", "from" => "gptbot(at)openai.com", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-openai-host-hash" => "393006065", "x-real-ip" => "74.7.227.130" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZ (truncated) 17:18:51.849 [info] GET /sources/7/media/28489/edit 17:18:51.849 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "28489", "source_id" => "7"} Pipelines: [:browser] 17:18:51.849 [debug] QUERY OK source="media_items" db=0.2ms idle=884.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" = ?) [28489] 17:18:51.850 [debug] QUERY OK source="settings" db=0.1ms idle=631.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:18:51.850 [debug] QUERY OK source="settings" db=0.1ms idle=631.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:18:51.850 [debug] QUERY OK source="settings" db=0.1ms idle=632.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:18:51.851 [info] Sent 200 in 2ms 17:18:57.355 [info] GET /sources/7/media/29046/force_download 17:18:57.355 [debug] QUERY OK source="settings" db=0.2ms idle=376.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:18:57.356 [debug] QUERY OK source="settings" db=0.1ms idle=137.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:18:57.356 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 17:18:57.356 [error] #PID<0.209442.0> running PinchflatWeb.Endpoint (connection #PID<0.209441.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /sources/7/media/29046/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/29046/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.209441.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/29046/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 45696}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbDBFbHVhM0M0SG9YdUtBSDZyVjdvb1Z1.zoj7VizfmhafO9O_iTuxrdjgmr1IeVW6Kyfl23aQTWw", "from" => "gptbot(at)openai.com", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-openai-host-hash" => "393006065", "x-real-ip" => "74.7.227.130" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbDBFbHVhM0M0SG9YdUtBSDZyVjdvb1Z1.zoj7VizfmhafO9O_iTuxrdjgmr1IeVW6Kyfl23aQTWw" }, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.209442.0>, params: %{}, path_info: ["sources", "7", "media", "29046", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbDBFbHVhM0M0SG9YdUtBSDZyVjdvb1Z1.zoj7VizfmhafO9O_iTuxrdjgmr1IeVW6Kyfl23aQTWw" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbDBFbHVhM0M0SG9YdUtBSDZyVjdvb1Z1.zoj7VizfmhafO9O_iTuxrdjgmr1IeVW6Kyfl23aQTWw"}, {"from", "gptbot(at)openai.com"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "393006065"}, {"x-real-ip", "74.7.227.130"} ], request_path: "/sources/7/media/29046/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIPnyt4dbzoPsrwADL6D"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.209441.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/29046/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 45696}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbDBFbHVhM0M0SG9YdUtBSDZyVjdvb1Z1.zoj7VizfmhafO9O_iTuxrdjgmr1IeVW6Kyfl23aQTWw", "from" => "gptbot(at)openai.com", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-openai-host-hash" => "393006065", "x-real-ip" => "74.7.227.130" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/29046/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.209441.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/29046/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 45696}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbDBFbHVhM0M0SG9YdUtBSDZyVjdvb1Z1.zoj7VizfmhafO9O_iTuxrdjgmr1IeVW6Kyfl23aQTWw", "from" => "gptbot(at)openai.com", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-openai-host-hash" => "393006065", "x-real-ip" => "74.7.227.130" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZ (truncated) 17:19:00.372 [info] {"source":"oban","duration":636,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:19:02.124 [info] GET /sources/4/media/28910/edit 17:19:02.124 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "28910", "source_id" => "4"} Pipelines: [:browser] 17:19:02.125 [debug] QUERY OK source="media_items" db=0.1ms idle=1135.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" = ?) [28910] 17:19:02.125 [debug] QUERY OK source="settings" db=0.1ms idle=906.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:19:02.126 [debug] QUERY OK source="settings" db=0.1ms idle=907.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:19:02.126 [debug] QUERY OK source="settings" db=0.1ms idle=907.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:19:02.127 [info] Sent 200 in 2ms 17:19:16.895 [info] GET /sources/7/media/29046/edit 17:19:16.895 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "29046", "source_id" => "7"} Pipelines: [:browser] 17:19:16.896 [debug] QUERY OK source="media_items" db=0.2ms idle=1677.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" = ?) [29046] 17:19:16.896 [debug] QUERY OK source="settings" db=0.1ms idle=1678.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:19:16.897 [debug] QUERY OK source="settings" db=0.2ms idle=1678.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:19:16.897 [debug] QUERY OK source="settings" db=0.2ms idle=1679.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:19:16.898 [info] Sent 200 in 3ms 17:19:17.923 [info] {"source":"oban","duration":1343,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:19:29.738 [info] GET /sources/7/media/29046 17:19:29.739 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "29046", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 17:19:29.739 [debug] QUERY OK source="media_items" db=0.2ms idle=1521.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" = ?) [29046] 17:19:29.740 [debug] QUERY OK source="tasks" db=0.1ms idle=1521.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" [29046] 17:19:29.740 [debug] QUERY OK source="sources" db=0.4ms idle=1521.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 17:19:29.741 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=691.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" = ?) [7405] 17:19:29.741 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=522.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 17:19:29.741 [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 [] 17:19:29.742 [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 [] 17:19:29.743 [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] 17:19:29.744 [info] Sent 200 in 6ms 17:19:42.420 [info] GET /sources/4/media/28910/force_download 17:19:42.420 [debug] QUERY OK source="settings" db=0.2ms idle=1202.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:19:42.421 [debug] QUERY OK source="settings" db=0.1ms idle=1202.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:19:42.421 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 17:19:42.421 [error] #PID<0.209457.0> running PinchflatWeb.Endpoint (connection #PID<0.209456.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /sources/4/media/28910/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/28910/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.209456.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/28910/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 45716}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbDBFbHVhM0M0SG9YdUtBSDZyVjdvb1Z1.zoj7VizfmhafO9O_iTuxrdjgmr1IeVW6Kyfl23aQTWw", "from" => "gptbot(at)openai.com", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-openai-host-hash" => "393006065", "x-real-ip" => "74.7.227.130" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbDBFbHVhM0M0SG9YdUtBSDZyVjdvb1Z1.zoj7VizfmhafO9O_iTuxrdjgmr1IeVW6Kyfl23aQTWw" }, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.209457.0>, params: %{}, path_info: ["sources", "4", "media", "28910", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbDBFbHVhM0M0SG9YdUtBSDZyVjdvb1Z1.zoj7VizfmhafO9O_iTuxrdjgmr1IeVW6Kyfl23aQTWw" }, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, deflate"}, {"connection", "close"}, {"cookie", "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbDBFbHVhM0M0SG9YdUtBSDZyVjdvb1Z1.zoj7VizfmhafO9O_iTuxrdjgmr1IeVW6Kyfl23aQTWw"}, {"from", "gptbot(at)openai.com"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-openai-host-hash", "393006065"}, {"x-real-ip", "74.7.227.130"} ], request_path: "/sources/4/media/28910/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIPn1Vwy3goVGvgADL_D"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.209456.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/28910/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 45716}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbDBFbHVhM0M0SG9YdUtBSDZyVjdvb1Z1.zoj7VizfmhafO9O_iTuxrdjgmr1IeVW6Kyfl23aQTWw", "from" => "gptbot(at)openai.com", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-openai-host-hash" => "393006065", "x-real-ip" => "74.7.227.130" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/4/media/28910/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.209456.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/28910/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 45716}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, deflate", "connection" => "close", "cookie" => "_pinchflat_key=SFMyNTY.g3QAAAABbQAAAAtfY3NyZl90b2tlbm0AAAAYbDBFbHVhM0M0SG9YdUtBSDZyVjdvb1Z1.zoj7VizfmhafO9O_iTuxrdjgmr1IeVW6Kyfl23aQTWw", "from" => "gptbot(at)openai.com", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; GPTBot/1.3; +https://openai.com/gptbot)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-openai-host-hash" => "393006065", "x-real-ip" => "74.7.227.130" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{ "_pinchflat_key" => "SFMyNTY.g3QAAAABbQAAAAtfY3NyZ (truncated) 17:19:47.925 [info] {"source":"oban","duration":857,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:19:52.872 [info] GET /sources/4/media/28910 17:19:52.873 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "28910", "prevent_download" => "true", "source_id" => "4"} Pipelines: [:browser] 17:19:52.873 [debug] QUERY OK source="media_items" db=0.3ms idle=1655.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" = ?) [28910] 17:19:52.874 [debug] QUERY OK source="tasks" db=0.2ms idle=1655.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" [28910] 17:19:52.874 [debug] QUERY OK source="sources" db=0.4ms idle=1655.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 17:19:52.875 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=780.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" = ?) [7397] 17:19:52.875 [debug] QUERY OK source="settings" db=0.2ms idle=657.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:19:52.875 [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:19:52.876 [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 [] 17:19:52.877 [debug] QUERY OK source="media_profiles" db=0.2ms 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] 17:19:52.878 [info] Sent 200 in 5ms 17:20:00.373 [info] {"source":"oban","duration":261,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:20:17.928 [info] {"source":"oban","duration":1655,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:20:26.458 [info] GET /media/5336ef72-c49e-4618-81ff-133649b3258b/stream 17:20:26.458 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "5336ef72-c49e-4618-81ff-133649b3258b", "v" => "1766479938"} Pipelines: [:maybe_basic_auth] 17:20:26.459 [debug] QUERY OK source="media_items" db=0.3ms idle=1239.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" = ?) ["5336ef72-c49e-4618-81ff-133649b3258b"] 17:20:26.459 [debug] Invalid range request for media item: 5336ef72-c49e-4618-81ff-133649b3258b - serving full file 17:20:26.459 [info] Sent 200 in 1ms 17:20:47.929 [info] {"source":"oban","duration":948,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:21:00.374 [info] {"source":"oban","duration":249,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:21:17.931 [info] {"source":"oban","duration":1165,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:21:47.933 [info] {"source":"oban","duration":903,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:22:00.375 [info] {"source":"oban","duration":423,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:22:17.935 [info] {"source":"oban","duration":833,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:22:47.938 [info] {"source":"oban","duration":1946,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:23:00.376 [info] {"source":"oban","duration":302,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:23:17.940 [info] {"source":"oban","duration":1544,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:23:47.942 [info] {"source":"oban","duration":762,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:24:00.377 [info] {"source":"oban","duration":293,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:24:17.945 [info] {"source":"oban","duration":1448,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:24:47.947 [info] {"source":"oban","duration":1568,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:25:00.378 [info] {"source":"oban","duration":351,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:25:17.949 [info] {"source":"oban","duration":1161,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:25:47.951 [info] {"source":"oban","duration":937,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:26:00.381 [info] {"source":"oban","duration":643,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:26:17.953 [info] {"source":"oban","duration":744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:26:47.954 [info] {"source":"oban","duration":821,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:27:00.382 [info] {"source":"oban","duration":368,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:27:17.957 [info] {"source":"oban","duration":1211,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:27:47.959 [info] {"source":"oban","duration":983,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:28:00.384 [info] {"source":"oban","duration":660,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:28:17.961 [info] {"source":"oban","duration":1396,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:28:47.963 [info] {"source":"oban","duration":836,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:29:00.386 [info] {"source":"oban","duration":387,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:29:17.965 [info] {"source":"oban","duration":1166,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:29:47.968 [info] {"source":"oban","duration":1584,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:30:00.388 [info] {"source":"oban","duration":796,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:30:17.970 [info] {"source":"oban","duration":1342,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:30:47.973 [info] {"source":"oban","duration":1757,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:31:00.389 [info] {"source":"oban","duration":391,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:31:17.975 [info] {"source":"oban","duration":1460,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:31:47.977 [info] {"source":"oban","duration":1446,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:32:00.390 [info] {"source":"oban","duration":402,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:32:17.979 [info] {"source":"oban","duration":835,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:32:47.981 [info] {"source":"oban","duration":763,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:33:00.392 [info] {"source":"oban","duration":1191,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:33:17.982 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:33:47.984 [info] {"source":"oban","duration":909,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:34:00.394 [info] {"source":"oban","duration":767,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:34:17.986 [info] {"source":"oban","duration":1074,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:34:47.988 [info] {"source":"oban","duration":770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:35:00.396 [info] {"source":"oban","duration":742,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:35:17.990 [info] {"source":"oban","duration":1209,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:35:47.992 [info] {"source":"oban","duration":1267,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:36:00.398 [info] {"source":"oban","duration":741,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:36:17.998 [info] {"source":"oban","duration":5517,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:36:48.000 [info] {"source":"oban","duration":1102,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:37:00.399 [info] {"source":"oban","duration":561,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:37:18.002 [info] {"source":"oban","duration":782,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:37:48.004 [info] {"source":"oban","duration":997,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:38:00.400 [info] {"source":"oban","duration":373,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:38:18.006 [info] {"source":"oban","duration":1371,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:38:48.008 [info] {"source":"oban","duration":1174,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:39:00.401 [info] {"source":"oban","duration":314,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:39:18.010 [info] {"source":"oban","duration":806,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:39:48.012 [info] {"source":"oban","duration":998,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:40:00.402 [info] {"source":"oban","duration":384,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:40:18.014 [info] {"source":"oban","duration":831,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:40:48.016 [info] {"source":"oban","duration":1570,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:41:00.404 [info] {"source":"oban","duration":967,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:41:18.018 [info] {"source":"oban","duration":1203,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:41:48.020 [info] {"source":"oban","duration":844,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:42:00.406 [info] {"source":"oban","duration":591,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:42:18.022 [info] {"source":"oban","duration":1280,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:42:48.024 [info] {"source":"oban","duration":1467,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:43:00.408 [info] {"source":"oban","duration":549,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:43:18.026 [info] {"source":"oban","duration":1405,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:43:48.029 [info] {"source":"oban","duration":1940,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:44:00.410 [info] {"source":"oban","duration":902,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:44:18.031 [info] {"source":"oban","duration":1194,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:44:48.034 [info] {"source":"oban","duration":1675,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:45:00.411 [info] {"source":"oban","duration":368,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:45:18.037 [info] {"source":"oban","duration":1752,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:45:48.039 [info] {"source":"oban","duration":1105,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:46:00.413 [info] {"source":"oban","duration":484,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:46:18.041 [info] {"source":"oban","duration":924,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:46:48.043 [info] {"source":"oban","duration":1696,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:47:00.415 [info] {"source":"oban","duration":566,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:47:18.045 [info] {"source":"oban","duration":1357,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:47:48.047 [info] {"source":"oban","duration":1297,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:48:00.417 [info] {"source":"oban","duration":551,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:48:18.049 [info] {"source":"oban","duration":684,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:48:48.050 [info] {"source":"oban","duration":1354,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:49:00.419 [info] {"source":"oban","duration":598,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:49:18.053 [info] {"source":"oban","duration":1154,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:49:48.055 [info] {"source":"oban","duration":821,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:50:00.420 [info] {"source":"oban","duration":358,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:50:18.058 [info] {"source":"oban","duration":1249,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:50:48.059 [info] {"source":"oban","duration":839,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:51:00.422 [info] {"source":"oban","duration":422,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:51:18.061 [info] {"source":"oban","duration":1227,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:51:48.063 [info] {"source":"oban","duration":996,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:52:00.423 [info] {"source":"oban","duration":313,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:52:18.065 [info] {"source":"oban","duration":899,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:52:48.067 [info] {"source":"oban","duration":869,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:53:00.425 [info] {"source":"oban","duration":492,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:53:18.069 [info] {"source":"oban","duration":995,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:53:48.071 [info] {"source":"oban","duration":859,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:54:00.426 [info] {"source":"oban","duration":584,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:54:18.074 [info] {"source":"oban","duration":1538,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:54:48.076 [info] {"source":"oban","duration":836,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:55:00.429 [info] {"source":"oban","duration":509,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:55:18.078 [info] {"source":"oban","duration":1206,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:55:48.080 [info] {"source":"oban","duration":1325,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:56:00.431 [info] {"source":"oban","duration":622,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:56:18.082 [info] {"source":"oban","duration":1060,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:56:48.084 [info] {"source":"oban","duration":1537,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:57:00.433 [info] {"source":"oban","duration":1162,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:57:18.086 [info] {"source":"oban","duration":1431,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:57:48.089 [info] {"source":"oban","duration":1933,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:58:00.435 [info] {"source":"oban","duration":476,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:58:18.091 [info] {"source":"oban","duration":1128,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:58:48.093 [info] {"source":"oban","duration":1057,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:59:00.436 [info] {"source":"oban","duration":437,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:59:18.095 [info] {"source":"oban","duration":1129,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:59:48.098 [info] {"source":"oban","duration":1448,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:00:00.438 [info] {"source":"oban","duration":637,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:00:18.100 [info] {"source":"oban","duration":1305,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:00:48.102 [info] {"source":"oban","duration":1627,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:01:00.440 [info] {"source":"oban","duration":583,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:01:18.105 [info] {"source":"oban","duration":1293,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:01:48.107 [info] {"source":"oban","duration":1651,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:02:00.441 [info] {"source":"oban","duration":262,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:02:18.109 [info] {"source":"oban","duration":830,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:02:48.111 [info] {"source":"oban","duration":784,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:03:00.442 [info] {"source":"oban","duration":322,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:03:18.113 [info] {"source":"oban","duration":1531,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:03:48.115 [info] {"source":"oban","duration":969,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:04:00.443 [info] {"source":"oban","duration":494,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:04:18.117 [info] {"source":"oban","duration":1631,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:04:48.119 [info] {"source":"oban","duration":1571,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:05:00.445 [info] {"source":"oban","duration":441,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:05:18.121 [info] {"source":"oban","duration":1332,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:05:48.123 [info] {"source":"oban","duration":967,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:06:00.447 [info] {"source":"oban","duration":1116,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:06:18.125 [info] {"source":"oban","duration":1447,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:06:48.127 [info] {"source":"oban","duration":759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:07:00.448 [info] {"source":"oban","duration":531,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:07:18.128 [info] {"source":"oban","duration":830,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:07:48.129 [info] {"source":"oban","duration":606,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:08:00.449 [info] {"source":"oban","duration":301,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:08:18.131 [info] {"source":"oban","duration":834,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:08:48.133 [info] {"source":"oban","duration":979,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:09:00.450 [info] {"source":"oban","duration":313,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:09:18.135 [info] {"source":"oban","duration":1251,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:09:48.137 [info] {"source":"oban","duration":1081,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:10:00.451 [info] {"source":"oban","duration":496,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:10:18.144 [info] {"source":"oban","duration":5668,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:10:48.146 [info] {"source":"oban","duration":719,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:11:00.453 [info] {"source":"oban","duration":810,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:11:18.147 [info] {"source":"oban","duration":1243,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:11:48.149 [info] {"source":"oban","duration":1583,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:12:00.455 [info] {"source":"oban","duration":765,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:12:18.151 [info] {"source":"oban","duration":935,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:12:48.153 [info] {"source":"oban","duration":980,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:13:00.457 [info] {"source":"oban","duration":1147,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:13:18.155 [info] {"source":"oban","duration":1299,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:13:48.156 [info] {"source":"oban","duration":701,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:14:00.458 [info] {"source":"oban","duration":506,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:14:18.158 [info] {"source":"oban","duration":1018,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:14:48.160 [info] {"source":"oban","duration":1006,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:15:00.459 [info] {"source":"oban","duration":500,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:15:18.162 [info] {"source":"oban","duration":865,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:15:48.164 [info] {"source":"oban","duration":1135,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:16:00.461 [info] {"source":"oban","duration":656,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:16:18.166 [info] {"source":"oban","duration":1209,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:16:48.168 [info] {"source":"oban","duration":1051,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:17:00.462 [info] {"source":"oban","duration":467,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:17:18.170 [info] {"source":"oban","duration":872,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:17:48.173 [info] {"source":"oban","duration":1921,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:18:00.463 [info] {"source":"oban","duration":274,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:18:18.175 [info] {"source":"oban","duration":1331,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:18:48.177 [info] {"source":"oban","duration":1200,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:19:00.465 [info] {"source":"oban","duration":901,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:19:18.179 [info] {"source":"oban","duration":934,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:19:48.181 [info] {"source":"oban","duration":1462,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:20:00.466 [info] {"source":"oban","duration":632,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:20:18.184 [info] {"source":"oban","duration":1754,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:20:48.186 [info] {"source":"oban","duration":1046,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:21:00.469 [info] {"source":"oban","duration":642,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:21:18.188 [info] {"source":"oban","duration":845,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:21:48.190 [info] {"source":"oban","duration":1011,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:22:00.471 [info] {"source":"oban","duration":806,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:22:18.192 [info] {"source":"oban","duration":1502,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:22:48.194 [info] {"source":"oban","duration":1267,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:23:00.473 [info] {"source":"oban","duration":542,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:23:18.197 [info] {"source":"oban","duration":1810,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:23:48.199 [info] {"source":"oban","duration":964,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:24:00.474 [info] {"source":"oban","duration":404,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:24:18.201 [info] {"source":"oban","duration":1068,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:24:48.203 [info] {"source":"oban","duration":1545,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:25:00.475 [info] {"source":"oban","duration":292,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:25:18.206 [info] {"source":"oban","duration":2006,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:25:48.208 [info] {"source":"oban","duration":1260,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:26:00.477 [info] {"source":"oban","duration":533,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:26:18.210 [info] {"source":"oban","duration":1225,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:26:48.212 [info] {"source":"oban","duration":1402,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:27:00.478 [info] {"source":"oban","duration":254,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:27:18.214 [info] {"source":"oban","duration":1015,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:27:48.217 [info] {"source":"oban","duration":1484,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:28:00.480 [info] {"source":"oban","duration":572,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:28:18.219 [info] {"source":"oban","duration":830,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:28:48.221 [info] {"source":"oban","duration":1368,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:29:00.482 [info] {"source":"oban","duration":898,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:29:18.223 [info] {"source":"oban","duration":1188,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:29:48.225 [info] {"source":"oban","duration":1240,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:30:00.484 [info] {"source":"oban","duration":441,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:30:18.227 [info] {"source":"oban","duration":680,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:30:48.229 [info] {"source":"oban","duration":1042,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:31:00.485 [info] {"source":"oban","duration":298,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:31:18.232 [info] {"source":"oban","duration":1566,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:31:48.234 [info] {"source":"oban","duration":1541,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:32:00.486 [info] {"source":"oban","duration":492,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:32:18.236 [info] {"source":"oban","duration":1456,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:32:48.238 [info] {"source":"oban","duration":1216,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:33:00.488 [info] {"source":"oban","duration":717,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:33:18.240 [info] {"source":"oban","duration":1472,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:33:48.242 [info] {"source":"oban","duration":1536,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:34:00.489 [info] {"source":"oban","duration":462,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:34:18.244 [info] {"source":"oban","duration":1536,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:34:48.246 [info] {"source":"oban","duration":1470,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:35:00.490 [info] {"source":"oban","duration":332,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:35:18.248 [info] {"source":"oban","duration":936,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:35:48.250 [info] {"source":"oban","duration":1356,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:36:00.492 [info] {"source":"oban","duration":502,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:36:18.252 [info] {"source":"oban","duration":1114,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:36:48.254 [info] {"source":"oban","duration":1094,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:37:00.493 [info] {"source":"oban","duration":333,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:37:18.256 [info] {"source":"oban","duration":843,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:37:48.258 [info] {"source":"oban","duration":1324,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:38:00.494 [info] {"source":"oban","duration":627,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:38:18.260 [info] {"source":"oban","duration":1057,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:38:48.262 [info] {"source":"oban","duration":1636,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:39:00.495 [info] {"source":"oban","duration":310,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:39:18.264 [info] {"source":"oban","duration":827,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:39:48.266 [info] {"source":"oban","duration":1030,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:40:00.496 [info] {"source":"oban","duration":627,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:40:18.269 [info] {"source":"oban","duration":1897,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:40:48.271 [info] {"source":"oban","duration":1314,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:41:00.498 [info] {"source":"oban","duration":582,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:41:18.273 [info] {"source":"oban","duration":1170,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:41:48.275 [info] {"source":"oban","duration":1376,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:42:00.499 [info] {"source":"oban","duration":315,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:42:18.278 [info] {"source":"oban","duration":1724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:42:48.280 [info] {"source":"oban","duration":777,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:43:00.501 [info] {"source":"oban","duration":562,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:43:18.282 [info] {"source":"oban","duration":1496,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:43:48.283 [info] {"source":"oban","duration":665,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:44:00.503 [info] {"source":"oban","duration":590,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:44:18.285 [info] {"source":"oban","duration":961,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:44:48.288 [info] {"source":"oban","duration":1791,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:45:00.505 [info] {"source":"oban","duration":681,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:45:18.290 [info] {"source":"oban","duration":997,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:45:48.292 [info] {"source":"oban","duration":1255,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:46:00.507 [info] {"source":"oban","duration":1107,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:46:18.294 [info] {"source":"oban","duration":1092,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:46:48.296 [info] {"source":"oban","duration":955,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:47:00.509 [info] {"source":"oban","duration":903,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:47:18.298 [info] {"source":"oban","duration":851,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:47:48.300 [info] {"source":"oban","duration":1015,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:48:00.510 [info] {"source":"oban","duration":411,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:48:18.302 [info] {"source":"oban","duration":1566,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:48:48.304 [info] {"source":"oban","duration":1020,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:49:00.512 [info] {"source":"oban","duration":547,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:49:18.306 [info] {"source":"oban","duration":853,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:49:48.308 [info] {"source":"oban","duration":1481,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:50:00.513 [info] {"source":"oban","duration":458,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:50:18.311 [info] {"source":"oban","duration":1631,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:50:48.313 [info] {"source":"oban","duration":2003,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:51:00.515 [info] {"source":"oban","duration":568,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:51:18.315 [info] {"source":"oban","duration":1018,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:51:48.317 [info] {"source":"oban","duration":1608,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:52:00.516 [info] {"source":"oban","duration":399,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:52:18.319 [info] {"source":"oban","duration":857,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:52:48.321 [info] {"source":"oban","duration":1267,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:53:00.517 [info] {"source":"oban","duration":590,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:53:18.323 [info] {"source":"oban","duration":1369,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:53:48.325 [info] {"source":"oban","duration":1264,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:54:00.519 [info] {"source":"oban","duration":515,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:54:18.327 [info] {"source":"oban","duration":934,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:54:48.329 [info] {"source":"oban","duration":952,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:55:00.520 [info] {"source":"oban","duration":209,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:55:18.331 [info] {"source":"oban","duration":1319,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:55:48.334 [info] {"source":"oban","duration":1557,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:56:00.522 [info] {"source":"oban","duration":414,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:56:18.337 [info] {"source":"oban","duration":1607,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:56:48.340 [info] {"source":"oban","duration":2039,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:57:00.524 [info] {"source":"oban","duration":313,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:57:18.342 [info] {"source":"oban","duration":1158,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:57:48.345 [info] {"source":"oban","duration":1040,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:58:00.526 [info] {"source":"oban","duration":274,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:58:18.347 [info] {"source":"oban","duration":1414,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:58:48.349 [info] {"source":"oban","duration":1129,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:59:00.528 [info] {"source":"oban","duration":826,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:59:18.352 [info] {"source":"oban","duration":1334,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:59:48.354 [info] {"source":"oban","duration":1656,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:00:00.530 [info] {"source":"oban","duration":596,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:00:18.356 [info] {"source":"oban","duration":1321,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:00:48.358 [info] {"source":"oban","duration":1535,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:01:00.532 [info] {"source":"oban","duration":1170,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:01:18.360 [info] {"source":"oban","duration":1122,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:01:48.362 [info] {"source":"oban","duration":1562,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:02:00.534 [info] {"source":"oban","duration":363,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:02:18.364 [info] {"source":"oban","duration":1379,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:02:48.366 [info] {"source":"oban","duration":1180,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:03:00.535 [info] {"source":"oban","duration":322,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:03:18.369 [info] {"source":"oban","duration":1259,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:03:48.371 [info] {"source":"oban","duration":1956,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:04:00.537 [info] {"source":"oban","duration":694,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:04:18.374 [info] {"source":"oban","duration":1217,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:04:48.376 [info] {"source":"oban","duration":1314,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:05:00.539 [info] {"source":"oban","duration":729,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:05:18.379 [info] {"source":"oban","duration":1433,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:05:48.381 [info] {"source":"oban","duration":1373,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:06:00.540 [info] {"source":"oban","duration":435,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:06:18.383 [info] {"source":"oban","duration":1538,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:06:48.385 [info] {"source":"oban","duration":1376,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:07:00.542 [info] {"source":"oban","duration":569,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:07:18.387 [info] {"source":"oban","duration":1138,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:07:48.389 [info] {"source":"oban","duration":849,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:08:00.544 [info] {"source":"oban","duration":553,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:08:18.391 [info] {"source":"oban","duration":1242,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:08:48.393 [info] {"source":"oban","duration":880,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:09:00.545 [info] {"source":"oban","duration":296,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:09:18.395 [info] {"source":"oban","duration":1161,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:09:48.397 [info] {"source":"oban","duration":1484,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:10:00.546 [info] {"source":"oban","duration":389,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:10:18.399 [info] {"source":"oban","duration":1389,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:10:48.401 [info] {"source":"oban","duration":781,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:11:00.548 [info] {"source":"oban","duration":810,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:11:18.403 [info] {"source":"oban","duration":1112,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:11:48.406 [info] {"source":"oban","duration":1564,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:12:00.549 [info] {"source":"oban","duration":331,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:12:18.408 [info] {"source":"oban","duration":1038,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:12:48.410 [info] {"source":"oban","duration":1299,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:13:00.551 [info] {"source":"oban","duration":644,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:13:18.412 [info] {"source":"oban","duration":993,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:13:48.414 [info] {"source":"oban","duration":1134,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:14:00.553 [info] {"source":"oban","duration":656,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:14:18.417 [info] {"source":"oban","duration":1624,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:14:48.419 [info] {"source":"oban","duration":1143,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:15:00.554 [info] {"source":"oban","duration":314,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:15:18.421 [info] {"source":"oban","duration":1400,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:15:48.423 [info] {"source":"oban","duration":1258,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:16:00.555 [info] {"source":"oban","duration":487,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:16:18.425 [info] {"source":"oban","duration":885,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:16:48.427 [info] {"source":"oban","duration":858,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:17:00.557 [info] {"source":"oban","duration":793,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:17:18.429 [info] {"source":"oban","duration":1113,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:17:48.431 [info] {"source":"oban","duration":1205,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:18:00.558 [info] {"source":"oban","duration":326,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:18:18.433 [info] {"source":"oban","duration":1024,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:18:48.435 [info] {"source":"oban","duration":1261,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:19:00.560 [info] {"source":"oban","duration":683,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:19:18.437 [info] {"source":"oban","duration":1068,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:19:48.439 [info] {"source":"oban","duration":1612,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:20:00.561 [info] {"source":"oban","duration":454,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:20:18.441 [info] {"source":"oban","duration":1445,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:20:48.443 [info] {"source":"oban","duration":1151,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:21:00.563 [info] {"source":"oban","duration":317,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:21:18.445 [info] {"source":"oban","duration":1018,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:21:48.447 [info] {"source":"oban","duration":1473,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:22:00.564 [info] {"source":"oban","duration":327,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:22:18.449 [info] {"source":"oban","duration":1270,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:22:48.451 [info] {"source":"oban","duration":948,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:23:00.566 [info] {"source":"oban","duration":525,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:23:18.453 [info] {"source":"oban","duration":987,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:23:48.455 [info] {"source":"oban","duration":1442,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:24:00.567 [info] {"source":"oban","duration":299,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:24:18.458 [info] {"source":"oban","duration":1961,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:24:48.460 [info] {"source":"oban","duration":1277,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:25:00.568 [info] {"source":"oban","duration":357,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:25:18.462 [info] {"source":"oban","duration":1167,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:25:48.464 [info] {"source":"oban","duration":1323,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:26:00.570 [info] {"source":"oban","duration":508,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:26:18.466 [info] {"source":"oban","duration":841,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:26:48.468 [info] {"source":"oban","duration":946,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:27:00.572 [info] {"source":"oban","duration":550,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:27:18.470 [info] {"source":"oban","duration":1222,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:27:48.472 [info] {"source":"oban","duration":1015,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:28:00.574 [info] {"source":"oban","duration":655,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:28:18.474 [info] {"source":"oban","duration":1013,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:28:48.476 [info] {"source":"oban","duration":1251,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:29:00.576 [info] {"source":"oban","duration":1220,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:29:18.479 [info] {"source":"oban","duration":1729,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:29:48.481 [info] {"source":"oban","duration":1486,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:30:00.578 [info] {"source":"oban","duration":519,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:30:18.483 [info] {"source":"oban","duration":1526,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:30:48.485 [info] {"source":"oban","duration":1448,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:31:00.579 [info] {"source":"oban","duration":304,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:31:18.487 [info] {"source":"oban","duration":1305,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:31:48.489 [info] {"source":"oban","duration":1608,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:32:00.580 [info] {"source":"oban","duration":326,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:32:18.491 [info] {"source":"oban","duration":900,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:32:48.493 [info] {"source":"oban","duration":1660,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:33:00.582 [info] {"source":"oban","duration":710,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:33:18.495 [info] {"source":"oban","duration":850,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:33:48.497 [info] {"source":"oban","duration":1087,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:34:00.584 [info] {"source":"oban","duration":1048,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:34:18.499 [info] {"source":"oban","duration":961,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:34:48.501 [info] {"source":"oban","duration":1562,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:35:00.585 [info] {"source":"oban","duration":214,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:35:18.503 [info] {"source":"oban","duration":927,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:35:48.505 [info] {"source":"oban","duration":1227,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:36:00.586 [info] {"source":"oban","duration":321,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:36:18.507 [info] {"source":"oban","duration":1134,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:36:48.509 [info] {"source":"oban","duration":1476,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:37:00.587 [info] {"source":"oban","duration":361,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:37:18.511 [info] {"source":"oban","duration":940,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:37:48.513 [info] {"source":"oban","duration":847,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:38:00.588 [info] {"source":"oban","duration":451,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:38:18.515 [info] {"source":"oban","duration":862,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:38:48.517 [info] {"source":"oban","duration":979,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:39:00.589 [info] {"source":"oban","duration":316,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:39:18.519 [info] {"source":"oban","duration":1611,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:39:48.521 [info] {"source":"oban","duration":1038,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:40:00.591 [info] {"source":"oban","duration":954,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:40:18.523 [info] {"source":"oban","duration":996,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:40:48.526 [info] {"source":"oban","duration":1427,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:41:00.593 [info] {"source":"oban","duration":486,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:41:18.528 [info] {"source":"oban","duration":1052,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:41:48.530 [info] {"source":"oban","duration":1640,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:42:00.595 [info] {"source":"oban","duration":442,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:42:18.532 [info] {"source":"oban","duration":905,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:42:48.534 [info] {"source":"oban","duration":956,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:43:00.597 [info] {"source":"oban","duration":766,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:43:18.536 [info] {"source":"oban","duration":1210,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:43:48.538 [info] {"source":"oban","duration":1012,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:44:00.599 [info] {"source":"oban","duration":434,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:44:18.540 [info] {"source":"oban","duration":1485,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:44:48.542 [info] {"source":"oban","duration":1365,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:45:00.601 [info] {"source":"oban","duration":841,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:45:18.544 [info] {"source":"oban","duration":1019,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:45:48.546 [info] {"source":"oban","duration":886,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:46:00.603 [info] {"source":"oban","duration":256,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:46:18.548 [info] {"source":"oban","duration":1317,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:46:48.550 [info] {"source":"oban","duration":1288,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:47:00.604 [info] {"source":"oban","duration":487,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:47:18.552 [info] {"source":"oban","duration":1344,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:47:48.554 [info] {"source":"oban","duration":735,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:48:00.606 [info] {"source":"oban","duration":561,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:48:18.556 [info] {"source":"oban","duration":1677,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:48:48.558 [info] {"source":"oban","duration":711,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:49:00.608 [info] {"source":"oban","duration":440,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:49:18.560 [info] {"source":"oban","duration":1269,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:49:48.562 [info] {"source":"oban","duration":1298,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:50:00.610 [info] {"source":"oban","duration":295,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:50:18.564 [info] {"source":"oban","duration":1228,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:50:48.566 [info] {"source":"oban","duration":788,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:51:00.611 [info] {"source":"oban","duration":1267,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:51:18.568 [info] {"source":"oban","duration":1301,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:51:48.570 [info] {"source":"oban","duration":826,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:52:00.612 [info] {"source":"oban","duration":324,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:52:18.572 [info] {"source":"oban","duration":923,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:52:48.574 [info] {"source":"oban","duration":1108,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:53:00.614 [info] {"source":"oban","duration":506,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:53:18.576 [info] {"source":"oban","duration":1456,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:53:48.578 [info] {"source":"oban","duration":953,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:54:00.616 [info] {"source":"oban","duration":578,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:54:18.580 [info] {"source":"oban","duration":895,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:54:48.582 [info] {"source":"oban","duration":1449,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:55:00.617 [info] {"source":"oban","duration":374,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:55:18.584 [info] {"source":"oban","duration":1107,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:55:48.586 [info] {"source":"oban","duration":823,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:56:00.618 [info] {"source":"oban","duration":403,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:56:18.588 [info] {"source":"oban","duration":1227,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:56:48.591 [info] {"source":"oban","duration":1721,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:57:00.620 [info] {"source":"oban","duration":532,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:57:18.593 [info] {"source":"oban","duration":1273,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:57:48.595 [info] {"source":"oban","duration":1629,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:58:00.622 [info] {"source":"oban","duration":265,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:58:18.597 [info] {"source":"oban","duration":1377,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:58:48.600 [info] {"source":"oban","duration":1830,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:59:00.623 [info] {"source":"oban","duration":339,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 19:59:18.602 [info] {"source":"oban","duration":852,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 19:59:48.604 [info] {"source":"oban","duration":963,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:00:00.624 [info] {"source":"oban","duration":552,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:00:18.606 [info] {"source":"oban","duration":1299,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:00:48.608 [info] {"source":"oban","duration":1081,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:01:00.625 [info] {"source":"oban","duration":258,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:01:18.610 [info] {"source":"oban","duration":830,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:01:48.613 [info] {"source":"oban","duration":1436,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:02:00.627 [info] {"source":"oban","duration":394,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:02:18.615 [info] {"source":"oban","duration":1339,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:02:48.617 [info] {"source":"oban","duration":1001,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:03:00.628 [info] {"source":"oban","duration":213,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:03:18.619 [info] {"source":"oban","duration":1461,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:03:48.621 [info] {"source":"oban","duration":969,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:04:00.630 [info] {"source":"oban","duration":757,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:04:18.624 [info] {"source":"oban","duration":1628,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:04:48.626 [info] {"source":"oban","duration":933,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:05:00.631 [info] {"source":"oban","duration":334,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:05:18.629 [info] {"source":"oban","duration":1727,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:05:48.632 [info] {"source":"oban","duration":1830,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:06:00.633 [info] {"source":"oban","duration":745,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:06:18.634 [info] {"source":"oban","duration":957,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:06:48.637 [info] {"source":"oban","duration":1559,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:07:00.634 [info] {"source":"oban","duration":322,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:07:18.639 [info] {"source":"oban","duration":1042,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:07:48.641 [info] {"source":"oban","duration":1255,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:08:00.635 [info] {"source":"oban","duration":306,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:08:18.643 [info] {"source":"oban","duration":892,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:08:48.645 [info] {"source":"oban","duration":845,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:09:00.637 [info] {"source":"oban","duration":597,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:09:18.648 [info] {"source":"oban","duration":1408,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:09:48.651 [info] {"source":"oban","duration":1716,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:10:00.638 [info] {"source":"oban","duration":569,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:10:18.653 [info] {"source":"oban","duration":1076,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:10:48.655 [info] {"source":"oban","duration":1099,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:11:00.641 [info] {"source":"oban","duration":658,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:11:18.657 [info] {"source":"oban","duration":698,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:11:48.659 [info] {"source":"oban","duration":1386,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:12:00.643 [info] {"source":"oban","duration":569,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:12:18.662 [info] {"source":"oban","duration":1187,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:12:48.665 [info] {"source":"oban","duration":1625,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:13:00.644 [info] {"source":"oban","duration":541,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:13:18.667 [info] {"source":"oban","duration":1289,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:13:48.669 [info] {"source":"oban","duration":1029,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:14:00.645 [info] {"source":"oban","duration":292,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:14:18.671 [info] {"source":"oban","duration":1319,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:14:48.673 [info] {"source":"oban","duration":981,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:15:00.647 [info] {"source":"oban","duration":778,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:15:18.676 [info] {"source":"oban","duration":1205,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:15:48.677 [info] {"source":"oban","duration":1285,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:16:00.648 [info] {"source":"oban","duration":413,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:16:18.680 [info] {"source":"oban","duration":1678,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:16:48.682 [info] {"source":"oban","duration":903,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:17:00.649 [info] {"source":"oban","duration":324,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:17:18.684 [info] {"source":"oban","duration":1233,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:17:48.687 [info] {"source":"oban","duration":1637,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:18:00.651 [info] {"source":"oban","duration":822,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:18:18.689 [info] {"source":"oban","duration":1032,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:18:48.691 [info] {"source":"oban","duration":1514,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:19:00.653 [info] {"source":"oban","duration":1341,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:19:18.693 [info] {"source":"oban","duration":1302,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:19:48.695 [info] {"source":"oban","duration":725,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:20:00.654 [info] {"source":"oban","duration":522,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:20:18.696 [info] {"source":"oban","duration":869,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:20:48.699 [info] {"source":"oban","duration":1966,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:21:00.656 [info] {"source":"oban","duration":1374,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:21:18.701 [info] {"source":"oban","duration":906,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:21:48.704 [info] {"source":"oban","duration":1170,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:22:00.657 [info] {"source":"oban","duration":314,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:22:18.706 [info] {"source":"oban","duration":1138,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:22:48.709 [info] {"source":"oban","duration":1545,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:23:00.658 [info] {"source":"oban","duration":359,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:23:18.711 [info] {"source":"oban","duration":1237,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:23:48.713 [info] {"source":"oban","duration":1169,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:24:00.660 [info] {"source":"oban","duration":747,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:24:18.715 [info] {"source":"oban","duration":777,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:24:48.717 [info] {"source":"oban","duration":1005,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:25:00.662 [info] {"source":"oban","duration":700,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:25:18.719 [info] {"source":"oban","duration":908,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:25:48.721 [info] {"source":"oban","duration":681,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:26:00.664 [info] {"source":"oban","duration":721,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:26:18.723 [info] {"source":"oban","duration":994,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:26:48.724 [info] {"source":"oban","duration":641,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:27:00.665 [info] {"source":"oban","duration":340,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:27:18.726 [info] {"source":"oban","duration":1571,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:27:48.728 [info] {"source":"oban","duration":1164,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:28:00.667 [info] {"source":"oban","duration":905,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:28:18.730 [info] {"source":"oban","duration":846,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:28:48.733 [info] {"source":"oban","duration":1674,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:29:00.668 [info] {"source":"oban","duration":392,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:29:18.734 [info] {"source":"oban","duration":1386,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:29:48.736 [info] {"source":"oban","duration":1603,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:30:00.669 [info] {"source":"oban","duration":301,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:30:18.739 [info] {"source":"oban","duration":1081,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:30:48.741 [info] {"source":"oban","duration":1196,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:31:00.671 [info] {"source":"oban","duration":733,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:31:18.743 [info] {"source":"oban","duration":1328,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:31:48.746 [info] {"source":"oban","duration":1824,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:32:00.672 [info] {"source":"oban","duration":382,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:32:18.748 [info] {"source":"oban","duration":1150,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:32:48.750 [info] {"source":"oban","duration":1295,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:33:00.674 [info] {"source":"oban","duration":719,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:33:18.752 [info] {"source":"oban","duration":718,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:33:48.754 [info] {"source":"oban","duration":901,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:34:00.675 [info] {"source":"oban","duration":242,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:34:18.756 [info] {"source":"oban","duration":710,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:34:48.758 [info] {"source":"oban","duration":672,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:35:00.676 [info] {"source":"oban","duration":331,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:35:18.760 [info] {"source":"oban","duration":889,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:35:48.762 [info] {"source":"oban","duration":1439,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:36:00.678 [info] {"source":"oban","duration":576,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:36:18.764 [info] {"source":"oban","duration":763,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:36:48.766 [info] {"source":"oban","duration":1209,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:37:00.679 [info] {"source":"oban","duration":496,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:37:14.947 [info] {"args":{"id":28910},"id":7397,"meta":{},"system_time":1766522234947405568,"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"]} 20:37:14.948 [debug] QUERY OK source="media_items" db=0.5ms idle=951.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" = ?) [28910] 20:37:14.948 [info] User scripts lifecyle file either not present or is empty. Skipping. 20:37:14.949 [debug] QUERY OK source="sources" db=0.3ms idle=952.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] 20:37:14.952 [debug] QUERY OK source="media_profiles" db=2.6ms idle=952.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 20:37:14.952 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=13.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 [28910] 20:37:14.953 [debug] QUERY OK source="media_metadata" db=0.1ms idle=6.2ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [28910] 20:37:14.953 [debug] QUERY OK source="media_profiles" db=0.1ms idle=5.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 20:37:14.954 [debug] QUERY OK source="settings" db=0.1ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:37:14.954 [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 [] 20:37:14.954 [debug] Running yt-dlp command for action: get_downloadable_status 20:37:14.955 [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 [] 20:37:14.955 [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 [] 20:37:14.955 [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 [] 20:37:14.956 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OMj_7N008C4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f7/f7/f7f7d1750c1477190a4b021dd39ee5a390ad65208540c056acb4369290dea539.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:37:17.842 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OMj_7N008C4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f7/f7/f7f7d1750c1477190a4b021dd39ee5a390ad65208540c056acb4369290dea539.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: [youtube] OMj_7N008C4: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] OMj_7N008C4: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 20:37:17.843 [debug] Running yt-dlp command for action: download 20:37:17.843 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1846.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:37:17.844 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1847.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:37:17.844 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1847.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:37:17.845 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OMj_7N008C4 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/af/62/af62887ab70da72f53be0e3fe30e950e595cd08662b72c49dcc118e72462b160.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:37:18.768 [info] {"source":"oban","duration":1377,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:37:21.175 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OMj_7N008C4 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/af/62/af62887ab70da72f53be0e3fe30e950e595cd08662b72c49dcc118e72462b160.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 WARNING: [youtube] OMj_7N008C4: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] OMj_7N008C4: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 20:37:21.175 [error] yt-dlp download error for media item #28910: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] OMj_7N008C4: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] OMj_7N008C4: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 20:37:21.176 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":28910},"id":7397,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6228776,"event":"job:exception","queue_time":164112,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 20:37:48.770 [info] {"source":"oban","duration":1297,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:38:00.681 [info] {"source":"oban","duration":417,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:38:18.772 [info] {"source":"oban","duration":1411,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:38:48.775 [info] {"source":"oban","duration":1322,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:39:00.683 [info] {"source":"oban","duration":478,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:39:18.777 [info] {"source":"oban","duration":1148,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:39:48.779 [info] {"source":"oban","duration":1565,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:40:00.685 [info] {"source":"oban","duration":951,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:40:18.781 [info] {"source":"oban","duration":1059,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:40:48.783 [info] {"source":"oban","duration":1081,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:41:00.686 [info] {"source":"oban","duration":312,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:41:18.785 [info] {"source":"oban","duration":1199,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:41:48.787 [info] {"source":"oban","duration":1290,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:42:00.687 [info] {"source":"oban","duration":307,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:42:18.789 [info] {"source":"oban","duration":1196,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:42:48.792 [info] {"source":"oban","duration":1367,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:43:00.689 [info] {"source":"oban","duration":1144,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:43:18.793 [info] {"source":"oban","duration":1528,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:43:48.795 [info] {"source":"oban","duration":1635,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:44:00.691 [info] {"source":"oban","duration":701,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:44:18.797 [info] {"source":"oban","duration":1274,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:44:48.799 [info] {"source":"oban","duration":1627,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:45:00.692 [info] {"source":"oban","duration":471,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:45:18.801 [info] {"source":"oban","duration":1297,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:45:48.803 [info] {"source":"oban","duration":892,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:46:00.693 [info] {"source":"oban","duration":347,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:46:18.805 [info] {"source":"oban","duration":1141,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:46:48.807 [info] {"source":"oban","duration":1546,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:47:00.695 [info] {"source":"oban","duration":528,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:47:18.809 [info] {"source":"oban","duration":1438,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:47:48.811 [info] {"source":"oban","duration":846,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:48:00.696 [info] {"source":"oban","duration":299,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:48:18.813 [info] {"source":"oban","duration":1238,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:48:48.815 [info] {"source":"oban","duration":1141,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:49:00.697 [info] {"source":"oban","duration":482,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:49:18.817 [info] {"source":"oban","duration":1093,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:49:48.819 [info] {"source":"oban","duration":1286,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:50:00.698 [info] {"source":"oban","duration":229,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:50:18.821 [info] {"source":"oban","duration":1612,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:50:48.823 [info] {"source":"oban","duration":1082,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:51:00.699 [info] {"source":"oban","duration":254,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:51:18.825 [info] {"source":"oban","duration":1483,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:51:48.827 [info] {"source":"oban","duration":829,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:52:00.701 [info] {"source":"oban","duration":728,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:52:18.828 [info] {"source":"oban","duration":632,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:52:48.830 [info] {"source":"oban","duration":1199,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:53:00.703 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:53:18.832 [info] {"source":"oban","duration":902,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:53:48.834 [info] {"source":"oban","duration":824,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:54:00.705 [info] {"source":"oban","duration":974,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:54:18.836 [info] {"source":"oban","duration":1256,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:54:48.838 [info] {"source":"oban","duration":1059,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:55:00.707 [info] {"source":"oban","duration":461,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:55:18.840 [info] {"source":"oban","duration":1109,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:55:48.842 [info] {"source":"oban","duration":877,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:56:00.709 [info] {"source":"oban","duration":805,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:56:18.844 [info] {"source":"oban","duration":825,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:56:48.846 [info] {"source":"oban","duration":1259,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:57:00.710 [info] {"source":"oban","duration":225,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:57:18.848 [info] {"source":"oban","duration":748,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:57:48.851 [info] {"source":"oban","duration":1643,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:58:00.712 [info] {"source":"oban","duration":376,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:58:18.853 [info] {"source":"oban","duration":720,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:58:48.855 [info] {"source":"oban","duration":1331,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:59:00.713 [info] {"source":"oban","duration":278,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 20:59:18.857 [info] {"source":"oban","duration":635,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:59:47.750 [info] {"args":{"id":8},"id":7383,"meta":{},"system_time":1766523587750087753,"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"]} 20:59:47.750 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=1746.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 20:59:47.751 [debug] QUERY OK source="settings" db=0.1ms idle=1747.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:59:47.752 [debug] QUERY OK source="media_items" db=0.6ms idle=1010.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")))) [8] 20:59:47.752 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=8.9ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [8] 20:59:47.753 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 20:59:47.753 [debug] QUERY OK source="settings" db=0.2ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:59:47.754 [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 [] 20:59:47.756 [debug] QUERY OK source="media_items" db=1.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."source_id" = ?) ORDER BY m0."uploaded_at" DESC LIMIT 50 OFFSET 20 [8] 20:59:47.782 [debug] Running yt-dlp command for action: get_media_attributes_for_collection 20:59:47.782 [debug] Current batch of media processed. Will check again in 1000ms 20:59:47.782 [debug] QUERY OK source="settings" db=0.1ms idle=29.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:59:47.782 [debug] QUERY OK source="settings" db=0.1ms idle=29.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:59:47.782 [debug] QUERY OK source="settings" db=0.1ms idle=28.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:59:47.783 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@codemod3d --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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/15/ae/15ae40eeae42927e113b93bde29ee8dc185862beb7802c3d8cafd3c258757c89.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/64/4d/644dede11feb8bf063589e896f35fd86e71226dcea01664c9bb0a99b016333d7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:59:48.783 [debug] Current batch of media processed. Will check again in 1000ms 20:59:48.859 [info] {"source":"oban","duration":1677,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 20:59:49.784 [debug] Current batch of media processed. Will check again in 1000ms 20:59:50.785 [debug] Current batch of media processed. Will check again in 1000ms 20:59:51.787 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "블렌더의 최신 버전, LTS 버전, 이전 버전 다운로드 받는 방법\n컴퓨터 최소 사양과 권장 사양 보는 방법 등을 자세히 다뤘습니다.\n\n본 영상은 즐거운 블렌더 아이소메트릭 하우스편 강의 2강입니다.\n\n\n💜블렌더 강의 in 인프런💜\n본격적으로 블렌더를 배우고 싶다면 추천드려요!\n강의를 수강하실 때 아래 링크를 각각 들어가서 장바구니에 담아주시면 저에게 도움이 됩니다. :)\n\n즐거운블렌더 - 아이소메트릭 하우스 : 많은 예제로 다양한 기능을 배우는 과정\nhttps://inf.run/x9TE2\n\n레벨0 입문 필수 : 블렌더를 처음 접하는 사람들을 위한 입문 과정\nhttps://inf.run/ujgR\n레벨1 기초 모델링 : 기본적인 기능을 이해하고 원리를 깨닫는 기초 과정\nhttps://inf.run/FSBC\n레벨2 모델링 연습 : 모델링 실전 위주의 기초 연습 과정\nhttps://inf.run/1ysYt\n레벨3 캐릭터 애니메이션 : 리깅과 애니메이션을 기초부터 배우는 과정\nhttps://inf.run/FAdR9\n\n\n📄INDEX\n0:07 블렌더 최신 버전 설치\n0:33 LTS 뜻\n1:05 버전 별로 노트 보기\n3:12 이전 버전 설치 방법 \n4:37 블렌더를 위한 컴퓨터 사양\n5:16 에셋 번들\n5:57 다운로드 설치 과정 따라하기\n6:50 블렌더 처음 설치했을 때 설정\n\n\n\n🎵 www.youtube.com/@oneul274\nOneul - Birthday Cupcakes\nOneul - Carrot Cake\nOneul - Crochet Heart", "duration" => 545, "filename" => "/downloads/코드모드 블렌더/2025-11-15 블렌더 설치하기 AtoZ | 구버전 다운로드 방법? LTS 뜻? | 코드모드/블렌더 설치하기 AtoZ | 구버전 다운로드 방법? LTS 뜻? | 코드모드 [0DZTq6PaZAY].mp4", "id" => "0DZTq6PaZAY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=0DZTq6PaZAY", "playlist_index" => 1, "timestamp" => 1763191506, "title" => "블렌더 설치하기 AtoZ | 구버전 다운로드 방법? LTS 뜻? | 코드모드", "upload_date" => "20251115"} 20:59:51.787 [debug] QUERY OK source="sources" db=0.2ms idle=1035.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [8] 20:59:51.787 [debug] QUERY OK source="sources" db=0.1ms idle=784.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 20:59:51.788 [debug] QUERY OK source="media_items" db=0.4ms idle=784.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-15 07:25:06Z], 8] 20:59:51.790 [debug] QUERY OK source="media_items" db=1.0ms idle=785.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["블렌더의 최신 버전, LTS 버전, 이전 버전 다운로드 받는 방법\n컴퓨터 최소 사양과 권장 사양 보는 방법 등을 자세히 다뤘습니다.\n\n본 영상은 즐거운 블렌더 아이소메트릭 하우스편 강의 2강입니다.\n\n\n💜블렌더 강의 in 인프런💜\n본격적으로 블렌더를 배우고 싶다면 추천드려요!\n강의를 수강하실 때 아래 링크를 각각 들어가서 장바구니에 담아주시면 저에게 도움이 됩니다. :)\n\n즐거운블렌더 - 아이소메트릭 하우스 : 많은 예제로 다양한 기능을 배우는 과정\nhttps://inf.run/x9TE2\n\n레벨0 입문 필수 : 블렌더를 처음 접하는 사람들을 위한 입문 과정\nhttps://inf.run/ujgR\n레벨1 기초 모델링 : 기본적인 기능을 이해하고 원리를 깨닫는 기초 과정\nhttps://inf.run/FSBC\n레벨2 모델링 연습 : 모델링 실전 위주의 기초 연습 과정\nhttps://inf.run/1ysYt\n레벨3 캐릭터 애니메이션 : 리깅과 애니메이션을 기초부터 배우는 과정\nhttps://inf.run/FAdR9\n\n\n📄INDEX\n0:07 블렌더 최신 버전 설치\n0:33 LTS 뜻\n1:05 버전 별로 노트 보기\n3:12 이전 버전 설치 방법 \n4:37 블렌더를 위한 컴퓨터 사양\n5:16 에셋 번들\n5:57 다운로드 설치 과정 따라하기\n6:50 블렌더 처음 설치했을 때 설정\n\n\n\n🎵 www.youtube.com/@oneul274\nOneul - Birthday Cupcakes\nOneul - Carrot Cake\nOneul - Crochet Heart", "블렌더 설치하기 AtoZ | 구버전 다운로드 방법? LTS 뜻? | 코드모드", "7ca2830c-8c9d-4680-bdb4-aad16e48a895", "https://www.youtube.com/watch?v=0DZTq6PaZAY", "0DZTq6PaZAY", false, 545, false, 1, "/downloads/코드모드 블렌더/2025-11-15 블렌더 설치하기 AtoZ | 구버전 다운로드 방법? LTS 뜻? | 코드모드/블렌더 설치하기 AtoZ | 구버전 다운로드 방법? LTS 뜻? | 코드모드 [0DZTq6PaZAY].mp4", false, false, 8, [], 98, ~U[2025-11-15 07:25:06Z], ~U[2025-12-23 20:59:51Z], ~U[2025-12-23 20:59:51Z], "블렌더의 최신 버전, LTS 버전, 이전 버전 다운로드 받는 방법\n컴퓨터 최소 사양과 권장 사양 보는 방법 등을 자세히 다뤘습니다.\n\n본 영상은 즐거운 블렌더 아이소메트릭 하우스편 강의 2강입니다.\n\n\n💜블렌더 강의 in 인프런💜\n본격적으로 블렌더를 배우고 싶다면 추천드려요!\n강의를 수강하실 때 아래 링크를 각각 들어가서 장바구니에 담아주시면 저에게 도움이 됩니다. :)\n\n즐거운블렌더 - 아이소메트릭 하우스 : 많은 예제로 다양한 기능을 배우는 과정\nhttps://inf.run/x9TE2\n\n레벨0 입문 필수 : 블렌더를 처음 접하는 사람들을 위한 입문 과정\nhttps://inf.run/ujgR\n레벨1 기초 모델링 : 기본적인 기능을 이해하고 원리를 깨닫는 기초 과정\nhttps://inf.run/FSBC\n레벨2 모델링 연습 : 모델링 실전 위주의 기초 연습 과정\nhttps://inf.run/1ysYt\n레벨3 캐릭터 애니메이션 : 리깅과 애니메이션을 기초부터 배우는 과정\nhttps://inf.run/FAdR9\n\n\n📄INDEX\n0:07 블렌더 최신 버전 설치\n0:33 LTS 뜻\n1:05 버전 별로 노트 보기\n3:12 이전 버전 설치 방법 \n4:37 블렌더를 위한 컴퓨터 사양\n5:16 에셋 번들\n5:57 다운로드 설치 과정 따라하기\n6:50 블렌더 처음 설치했을 때 설정\n\n\n\n🎵 www.youtube.com/@oneul274\nOneul - Birthday Cupcakes\nOneul - Carrot Cake\nOneul - Crochet Heart", "블렌더 설치하기 AtoZ | 구버전 다운로드 방법? LTS 뜻? | 코드모드", "https://www.youtube.com/watch?v=0DZTq6PaZAY", "0DZTq6PaZAY", 545, false, "/downloads/코드모드 블렌더/2025-11-15 블렌더 설치하기 AtoZ | 구버전 다운로드 방법? LTS 뜻? | 코드모드/블렌더 설치하기 AtoZ | 구버전 다운로드 방법? LTS 뜻? | 코드모드 [0DZTq6PaZAY].mp4", false, 8, ~U[2025-11-15 07:25:06Z]] 20:59:51.790 [debug] QUERY OK source="sources" db=0.2ms idle=35.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 20:59:51.790 [debug] QUERY OK source="media_profiles" db=0.1ms queue=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] 20:59:51.791 [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 [23890] 20:59:51.791 [info] Kicking off download for media item #23890 (0DZTq6PaZAY) 20:59:51.792 [debug] Current batch of media processed. Will check again in 1000ms 20:59:52.793 [debug] Current batch of media processed. Will check again in 1000ms 20:59:53.794 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "🎉2차 얼리버드 이벤트🎉\n- 12.29까지 40% 할인\n- 본 강의는 연재형 강의로 계속 업데이트 될 예정입니다.\n\n💜즐거운 블렌더 링크💜\n아이소메트릭 하우스 https://inf.run/x9TE2\n\n- 모델링, 텍스처링, 렌더링, 피직스, 파티클, 머티리얼 노드, 애니메이션, 라이브러리에 다양한 노하우까지!\n- 예쁜집을 아이소메트릭하우스 스타일로 만들어보면서 블렌더의 기본기 AtoZ를 배우고 연습해봐요! \n- 완강 후엔 자신만의 모델링을 할 수 있는 노하우와 실력을 얻을 수 있을 거예요. :)\n\n\n💜친절한 블렌더 링크💜\n레벨0 입문 필수 https://inf.run/ujgR \n레벨1 기초 모델링 https://inf.run/FSBC\n레벨2 모델링 연습 https://inf.run/1ysYt\n레벨3 캐릭터 애니메이션 https://inf.run/FAdR9\n\n🗨️강의 다국어 지원 안내\n- 인프런 강의는 한국어 외에 영어, 일본어, 베트남어 지원이 가능합니다.\n- 수강할 때 강의 화면 하단의 설정 키를 통해 자막과 음성 언어를 각각 원하는 언어 타입으로 변경할 수 있습니다.\n- 여러분의 즐거운 블렌더 공부를 응원합니다!\n\n\n\n📄INDEX\n0:00 즐거운 블렌더 아이소메트릭 하우스 강의 소개\n0:50 어떤 것을 배우나요? (커리큘럼)\n2:49 어떤 강의가 나에게 잘 맞을까? (친절한 블렌더 vs 즐거운 블렌더) \n5:09 홍보링크 가이드\n\n#블렌더강좌 #블렌더 #isometric \n\n\n\n🎵 www.youtube.com/@oneul274\nOneul - Rainbow Suncatcher\nOneul - Merry Cherry\nOneul - Strawberry Much\nOneul - Cotton Candy", "duration" => 330, "filename" => "/downloads/코드모드 블렌더/2025-10-30 나만의 집 만들고 싶은 사람 모여라🏠 | 즐거운 블렌더 아이소메트릭 하우스 | 코드모드/나만의 집 만들고 싶은 사람 모여라🏠 | 즐거운 블렌더 아이소메트릭 하우스 | 코드모드 [jgALDDerb_E].mp4", "id" => "jgALDDerb_E", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=jgALDDerb_E", "playlist_index" => 2, "timestamp" => 1761839401, "title" => "나만의 집 만들고 싶은 사람 모여라🏠 | 즐거운 블렌더 아이소메트릭 하우스 | 코드모드", "upload_date" => "20251030"} 20:59:53.795 [debug] QUERY OK source="sources" db=0.2ms idle=791.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [8] 20:59:53.795 [debug] QUERY OK source="sources" db=0.2ms idle=792.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" = ?) [8] 20:59:53.796 [debug] QUERY OK source="media_items" db=0.5ms idle=792.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-30 15:50:01Z], 8] 20:59:53.798 [debug] QUERY OK source="media_items" db=1.0ms idle=793.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["🎉2차 얼리버드 이벤트🎉\n- 12.29까지 40% 할인\n- 본 강의는 연재형 강의로 계속 업데이트 될 예정입니다.\n\n💜즐거운 블렌더 링크💜\n아이소메트릭 하우스 https://inf.run/x9TE2\n\n- 모델링, 텍스처링, 렌더링, 피직스, 파티클, 머티리얼 노드, 애니메이션, 라이브러리에 다양한 노하우까지!\n- 예쁜집을 아이소메트릭하우스 스타일로 만들어보면서 블렌더의 기본기 AtoZ를 배우고 연습해봐요! \n- 완강 후엔 자신만의 모델링을 할 수 있는 노하우와 실력을 얻을 수 있을 거예요. :)\n\n\n💜친절한 블렌더 링크💜\n레벨0 입문 필수 https://inf.run/ujgR \n레벨1 기초 모델링 https://inf.run/FSBC\n레벨2 모델링 연습 https://inf.run/1ysYt\n레벨3 캐릭터 애니메이션 https://inf.run/FAdR9\n\n🗨️강의 다국어 지원 안내\n- 인프런 강의는 한국어 외에 영어, 일본어, 베트남어 지원이 가능합니다.\n- 수강할 때 강의 화면 하단의 설정 키를 통해 자막과 음성 언어를 각각 원하는 언어 타입으로 변경할 수 있습니다.\n- 여러분의 즐거운 블렌더 공부를 응원합니다!\n\n\n\n📄INDEX\n0:00 즐거운 블렌더 아이소메트릭 하우스 강의 소개\n0:50 어떤 것을 배우나요? (커리큘럼)\n2:49 어떤 강의가 나에게 잘 맞을까? (친절한 블렌더 vs 즐거운 블렌더) \n5:09 홍보링크 가이드\n\n#블렌더강좌 #블렌더 #isometric \n\n\n\n🎵 www.youtube.com/@oneul274\nOneul - Rainbow Suncatcher\nOneul - Merry Cherry\nOneul - Strawberry Much\nOneul - Cotton Candy", "나만의 집 만들고 싶은 사람 모여라🏠 | 즐거운 블렌더 아이소메트릭 하우스 | 코드모드", "af28ac98-d0c8-4e19-8b0a-f46a92df0c63", "https://www.youtube.com/watch?v=jgALDDerb_E", "jgALDDerb_E", false, 330, false, 2, "/downloads/코드모드 블렌더/2025-10-30 나만의 집 만들고 싶은 사람 모여라🏠 | 즐거운 블렌더 아이소메트릭 하우스 | 코드모드/나만의 집 만들고 싶은 사람 모여라🏠 | 즐거운 블렌더 아이소메트릭 하우스 | 코드모드 [jgALDDerb_E].mp4", false, false, 8, [], 98, ~U[2025-10-30 15:50:01Z], ~U[2025-12-23 20:59:53Z], ~U[2025-12-23 20:59:53Z], "🎉2차 얼리버드 이벤트🎉\n- 12.29까지 40% 할인\n- 본 강의는 연재형 강의로 계속 업데이트 될 예정입니다.\n\n💜즐거운 블렌더 링크💜\n아이소메트릭 하우스 https://inf.run/x9TE2\n\n- 모델링, 텍스처링, 렌더링, 피직스, 파티클, 머티리얼 노드, 애니메이션, 라이브러리에 다양한 노하우까지!\n- 예쁜집을 아이소메트릭하우스 스타일로 만들어보면서 블렌더의 기본기 AtoZ를 배우고 연습해봐요! \n- 완강 후엔 자신만의 모델링을 할 수 있는 노하우와 실력을 얻을 수 있을 거예요. :)\n\n\n💜친절한 블렌더 링크💜\n레벨0 입문 필수 https://inf.run/ujgR \n레벨1 기초 모델링 https://inf.run/FSBC\n레벨2 모델링 연습 https://inf.run/1ysYt\n레벨3 캐릭터 애니메이션 https://inf.run/FAdR9\n\n🗨️강의 다국어 지원 안내\n- 인프런 강의는 한국어 외에 영어, 일본어, 베트남어 지원이 가능합니다.\n- 수강할 때 강의 화면 하단의 설정 키를 통해 자막과 음성 언어를 각각 원하는 언어 타입으로 변경할 수 있습니다.\n- 여러분의 즐거운 블렌더 공부를 응원합니다!\n\n\n\n📄INDEX\n0:00 즐거운 블렌더 아이소메트릭 하우스 강의 소개\n0:50 어떤 것을 배우나요? (커리큘럼)\n2:49 어떤 강의가 나에게 잘 맞을까? (친절한 블렌더 vs 즐거운 블렌더) \n5:09 홍보링크 가이드\n\n#블렌더강좌 #블렌더 #isometric \n\n\n\n🎵 www.youtube.com/@oneul274\nOneul - Rainbow Suncatcher\nOneul - Merry Cherry\nOneul - Strawberry Much\nOneul - Cotton Candy", "나만의 집 만들고 싶은 사람 모여라🏠 | 즐거운 블렌더 아이소메트릭 하우스 | 코드모드", "https://www.youtube.com/watch?v=jgALDDerb_E", "jgALDDerb_E", 330, false, "/downloads/코드모드 블렌더/2025-10-30 나만의 집 만들고 싶은 사람 모여라🏠 | 즐거운 블렌더 아이소메트릭 하우스 | 코드모드/나만의 집 만들고 싶은 사람 모여라🏠 | 즐거운 블렌더 아이소메트릭 하우스 | 코드모드 [jgALDDerb_E].mp4", false, 8, ~U[2025-10-30 15:50:01Z]] 20:59:53.798 [debug] QUERY OK source="sources" db=0.2ms idle=39.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" = ?) [8] 20:59:53.799 [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] 20:59:53.799 [debug] QUERY OK source="media_items" db=0.3ms 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 [23891] 20:59:53.799 [debug] Current batch of media processed. Will check again in 1000ms 20:59:54.800 [debug] Current batch of media processed. Will check again in 1000ms 20:59:55.802 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "📄 INDEX \n00:11 넘버패드 없을 때 생기는 문제점\n01:27 해결방법1. Emulate Numpad\n03:10 해결방법2. 3D Viewport Pie Menus (Addons)\n06:05 Numpad 단축키 정리\n\n\n💜친절한 블렌더 - 인프런💜\n본격적으로 블렌더를 배우고 싶다면 추천드려요!\n자세한 내용은 프로필링크를 참고해주세요.\n강의를 수강하실 때 아래 링크를 각각 들어가서 장바구니에 담아주시면 저에게 도움이 됩니다. :)\n\n레벨0 입문 필수 : 블렌더를 처음 접하는 사람들을 위한 입문 과정\nhttps://inf.run/ujgR\n레벨1 기초 모델링 : 기본적인 기능을 이해하고 원리를 깨닫는 기초 과정\nhttps://inf.run/FSBC\n레벨2 모델링 연습 : 모델링 실전 위주의 기초 연습 과정\nhttps://inf.run/1ysYt\n레벨3 캐릭터 애니메이션 : 리깅과 애니메이션을 기초부터 배우는 과정\nhttps://inf.run/FAdR9\n\n#blender #블렌더강좌 #블렌더3d", "duration" => 377, "filename" => "/downloads/코드모드 블렌더/2025-10-25 넘패드 없이 블렌더 | 코드모드/넘패드 없이 블렌더 | 코드모드 [8nT7tIj3SKw].mp4", "id" => "8nT7tIj3SKw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=8nT7tIj3SKw", "playlist_index" => 3, "timestamp" => 1761400816, "title" => "넘패드 없이 블렌더 | 코드모드", "upload_date" => "20251025"} 20:59:55.802 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=799.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [8] 20:59:55.803 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=799.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 20:59:55.804 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=800.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-25 14:00:16Z], 8] 20:59:55.808 [debug] QUERY OK source="media_items" db=3.1ms idle=801.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📄 INDEX \n00:11 넘버패드 없을 때 생기는 문제점\n01:27 해결방법1. Emulate Numpad\n03:10 해결방법2. 3D Viewport Pie Menus (Addons)\n06:05 Numpad 단축키 정리\n\n\n💜친절한 블렌더 - 인프런💜\n본격적으로 블렌더를 배우고 싶다면 추천드려요!\n자세한 내용은 프로필링크를 참고해주세요.\n강의를 수강하실 때 아래 링크를 각각 들어가서 장바구니에 담아주시면 저에게 도움이 됩니다. :)\n\n레벨0 입문 필수 : 블렌더를 처음 접하는 사람들을 위한 입문 과정\nhttps://inf.run/ujgR\n레벨1 기초 모델링 : 기본적인 기능을 이해하고 원리를 깨닫는 기초 과정\nhttps://inf.run/FSBC\n레벨2 모델링 연습 : 모델링 실전 위주의 기초 연습 과정\nhttps://inf.run/1ysYt\n레벨3 캐릭터 애니메이션 : 리깅과 애니메이션을 기초부터 배우는 과정\nhttps://inf.run/FAdR9\n\n#blender #블렌더강좌 #블렌더3d", "넘패드 없이 블렌더 | 코드모드", "a7a0cce4-c97f-4329-8502-8c0d0b9a22e1", "https://www.youtube.com/watch?v=8nT7tIj3SKw", "8nT7tIj3SKw", false, 377, false, 3, "/downloads/코드모드 블렌더/2025-10-25 넘패드 없이 블렌더 | 코드모드/넘패드 없이 블렌더 | 코드모드 [8nT7tIj3SKw].mp4", false, false, 8, [], 98, ~U[2025-10-25 14:00:16Z], ~U[2025-12-23 20:59:55Z], ~U[2025-12-23 20:59:55Z], "📄 INDEX \n00:11 넘버패드 없을 때 생기는 문제점\n01:27 해결방법1. Emulate Numpad\n03:10 해결방법2. 3D Viewport Pie Menus (Addons)\n06:05 Numpad 단축키 정리\n\n\n💜친절한 블렌더 - 인프런💜\n본격적으로 블렌더를 배우고 싶다면 추천드려요!\n자세한 내용은 프로필링크를 참고해주세요.\n강의를 수강하실 때 아래 링크를 각각 들어가서 장바구니에 담아주시면 저에게 도움이 됩니다. :)\n\n레벨0 입문 필수 : 블렌더를 처음 접하는 사람들을 위한 입문 과정\nhttps://inf.run/ujgR\n레벨1 기초 모델링 : 기본적인 기능을 이해하고 원리를 깨닫는 기초 과정\nhttps://inf.run/FSBC\n레벨2 모델링 연습 : 모델링 실전 위주의 기초 연습 과정\nhttps://inf.run/1ysYt\n레벨3 캐릭터 애니메이션 : 리깅과 애니메이션을 기초부터 배우는 과정\nhttps://inf.run/FAdR9\n\n#blender #블렌더강좌 #블렌더3d", "넘패드 없이 블렌더 | 코드모드", "https://www.youtube.com/watch?v=8nT7tIj3SKw", "8nT7tIj3SKw", 377, false, "/downloads/코드모드 블렌더/2025-10-25 넘패드 없이 블렌더 | 코드모드/넘패드 없이 블렌더 | 코드모드 [8nT7tIj3SKw].mp4", false, 8, ~U[2025-10-25 14:00:16Z]] 20:59:55.808 [debug] QUERY OK source="sources" db=0.2ms idle=46.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 20:59:55.809 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=5.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 20:59:55.809 [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 [23892] 20:59:55.809 [debug] Current batch of media processed. Will check again in 1000ms 20:59:56.810 [debug] Current batch of media processed. Will check again in 1000ms 20:59:57.812 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#3danimation #shortfilm #blender \n\n✨마법상점의 빛나는 밤 | Shining Night of the Magic Shop✨\n블렌더로 만든 짧은 3D 애니메이션 입니다! :)\n숨은 재미가 곳곳에 있으니 찾아보세요!\n\n\n\n🎵\nhttps://youtu.be/SN_KvvyfvPA?si=vfcRA3BWZrHwELFA\nhttps://youtu.be/fMeEq9P7EZ0?si=zPI3L5PpRRnTj7zR\n\n\n\n💜친절한 블렌더 - 인프런💜\n배경과 마법사는 친절한 블렌더 레벨2 모델링 연습에서 만들 수 있고\n고양이 캐릭터는 친절한 블렌더 레벨3 캐릭터 애니메이션에서 만들 수 있습니다.\n\n본격적으로 블렌더를 배우고 싶다면 추천드려요!\n강의를 수강하실 때 아래 링크를 각각 들어가서 장바구니에 담아주시면 저에게 도움이 됩니다. :)\n\n레벨0 입문 필수 : 블렌더를 처음 접하는 사람들을 위한 입문 과정\nhttps://inf.run/ujgR\n레벨1 기초 모델링 : 기본적인 기능을 이해하고 원리를 깨닫는 기초 과정\nhttps://inf.run/FSBC\n레벨2 모델링 연습 : 모델링 실전 위주의 기초 연습 과정\nhttps://inf.run/1ysYt\n레벨3 캐릭터 애니메이션 : 리깅과 애니메이션을 기초부터 배우는 과정\nhttps://inf.run/FAdR9", "duration" => 68, "filename" => "/downloads/코드모드 블렌더/2025-05-11 [블렌더 3D 애니메이션] 마법상점의 빛나는 밤 | 코드모드/[블렌더 3D 애니메이션] 마법상점의 빛나는 밤 | 코드모드 [qpdkzqx0KXY].mp4", "id" => "qpdkzqx0KXY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=qpdkzqx0KXY", "playlist_index" => 4, "timestamp" => 1746961281, "title" => "[블렌더 3D 애니메이션] 마법상점의 빛나는 밤 | 코드모드", "upload_date" => "20250511"} 20:59:57.812 [debug] QUERY OK source="sources" db=0.2ms idle=809.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 (?)) [8] 20:59:57.813 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=809.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 20:59:57.814 [debug] QUERY OK source="media_items" db=0.4ms idle=810.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-05-11 11:01:21Z], 8] 20:59:57.815 [debug] QUERY OK source="media_items" db=0.8ms idle=811.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#3danimation #shortfilm #blender \n\n✨마법상점의 빛나는 밤 | Shining Night of the Magic Shop✨\n블렌더로 만든 짧은 3D 애니메이션 입니다! :)\n숨은 재미가 곳곳에 있으니 찾아보세요!\n\n\n\n🎵\nhttps://youtu.be/SN_KvvyfvPA?si=vfcRA3BWZrHwELFA\nhttps://youtu.be/fMeEq9P7EZ0?si=zPI3L5PpRRnTj7zR\n\n\n\n💜친절한 블렌더 - 인프런💜\n배경과 마법사는 친절한 블렌더 레벨2 모델링 연습에서 만들 수 있고\n고양이 캐릭터는 친절한 블렌더 레벨3 캐릭터 애니메이션에서 만들 수 있습니다.\n\n본격적으로 블렌더를 배우고 싶다면 추천드려요!\n강의를 수강하실 때 아래 링크를 각각 들어가서 장바구니에 담아주시면 저에게 도움이 됩니다. :)\n\n레벨0 입문 필수 : 블렌더를 처음 접하는 사람들을 위한 입문 과정\nhttps://inf.run/ujgR\n레벨1 기초 모델링 : 기본적인 기능을 이해하고 원리를 깨닫는 기초 과정\nhttps://inf.run/FSBC\n레벨2 모델링 연습 : 모델링 실전 위주의 기초 연습 과정\nhttps://inf.run/1ysYt\n레벨3 캐릭터 애니메이션 : 리깅과 애니메이션을 기초부터 배우는 과정\nhttps://inf.run/FAdR9", "[블렌더 3D 애니메이션] 마법상점의 빛나는 밤 | 코드모드", "1db0c69f-1283-4127-b5d3-7a76756c635d", "https://www.youtube.com/watch?v=qpdkzqx0KXY", "qpdkzqx0KXY", false, 68, false, 4, "/downloads/코드모드 블렌더/2025-05-11 [블렌더 3D 애니메이션] 마법상점의 빛나는 밤 | 코드모드/[블렌더 3D 애니메이션] 마법상점의 빛나는 밤 | 코드모드 [qpdkzqx0KXY].mp4", false, false, 8, [], 98, ~U[2025-05-11 11:01:21Z], ~U[2025-12-23 20:59:57Z], ~U[2025-12-23 20:59:57Z], "#3danimation #shortfilm #blender \n\n✨마법상점의 빛나는 밤 | Shining Night of the Magic Shop✨\n블렌더로 만든 짧은 3D 애니메이션 입니다! :)\n숨은 재미가 곳곳에 있으니 찾아보세요!\n\n\n\n🎵\nhttps://youtu.be/SN_KvvyfvPA?si=vfcRA3BWZrHwELFA\nhttps://youtu.be/fMeEq9P7EZ0?si=zPI3L5PpRRnTj7zR\n\n\n\n💜친절한 블렌더 - 인프런💜\n배경과 마법사는 친절한 블렌더 레벨2 모델링 연습에서 만들 수 있고\n고양이 캐릭터는 친절한 블렌더 레벨3 캐릭터 애니메이션에서 만들 수 있습니다.\n\n본격적으로 블렌더를 배우고 싶다면 추천드려요!\n강의를 수강하실 때 아래 링크를 각각 들어가서 장바구니에 담아주시면 저에게 도움이 됩니다. :)\n\n레벨0 입문 필수 : 블렌더를 처음 접하는 사람들을 위한 입문 과정\nhttps://inf.run/ujgR\n레벨1 기초 모델링 : 기본적인 기능을 이해하고 원리를 깨닫는 기초 과정\nhttps://inf.run/FSBC\n레벨2 모델링 연습 : 모델링 실전 위주의 기초 연습 과정\nhttps://inf.run/1ysYt\n레벨3 캐릭터 애니메이션 : 리깅과 애니메이션을 기초부터 배우는 과정\nhttps://inf.run/FAdR9", "[블렌더 3D 애니메이션] 마법상점의 빛나는 밤 | 코드모드", "https://www.youtube.com/watch?v=qpdkzqx0KXY", "qpdkzqx0KXY", 68, false, "/downloads/코드모드 블렌더/2025-05-11 [블렌더 3D 애니메이션] 마법상점의 빛나는 밤 | 코드모드/[블렌더 3D 애니메이션] 마법상점의 빛나는 밤 | 코드모드 [qpdkzqx0KXY].mp4", false, 8, ~U[2025-05-11 11:01:21Z]] 20:59:57.816 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=49.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 20:59:57.816 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 20:59:57.817 [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 [23893] 20:59:57.817 [debug] Current batch of media processed. Will check again in 1000ms 20:59:58.818 [debug] Current batch of media processed. Will check again in 1000ms 20:59:59.460 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@codemod3d --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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/15/ae/15ae40eeae42927e113b93bde29ee8dc185862beb7802c3d8cafd3c258757c89.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/64/4d/644dede11feb8bf063589e896f35fd86e71226dcea01664c9bb0a99b016333d7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 101 with: 20:59:59.460 [debug] Gracefully stopping file follower 20:59:59.461 [debug] QUERY OK source="sources" db=0.2ms idle=692.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 (?)) [8] 20:59:59.461 [debug] QUERY OK source="sources" db=0.2ms idle=458.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 20:59:59.462 [debug] QUERY OK source="media_items" db=0.5ms idle=458.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-15 07:25:06Z], 8] 20:59:59.464 [debug] QUERY OK source="media_items" db=1.0ms idle=459.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["블렌더의 최신 버전, LTS 버전, 이전 버전 다운로드 받는 방법\n컴퓨터 최소 사양과 권장 사양 보는 방법 등을 자세히 다뤘습니다.\n\n본 영상은 즐거운 블렌더 아이소메트릭 하우스편 강의 2강입니다.\n\n\n💜블렌더 강의 in 인프런💜\n본격적으로 블렌더를 배우고 싶다면 추천드려요!\n강의를 수강하실 때 아래 링크를 각각 들어가서 장바구니에 담아주시면 저에게 도움이 됩니다. :)\n\n즐거운블렌더 - 아이소메트릭 하우스 : 많은 예제로 다양한 기능을 배우는 과정\nhttps://inf.run/x9TE2\n\n레벨0 입문 필수 : 블렌더를 처음 접하는 사람들을 위한 입문 과정\nhttps://inf.run/ujgR\n레벨1 기초 모델링 : 기본적인 기능을 이해하고 원리를 깨닫는 기초 과정\nhttps://inf.run/FSBC\n레벨2 모델링 연습 : 모델링 실전 위주의 기초 연습 과정\nhttps://inf.run/1ysYt\n레벨3 캐릭터 애니메이션 : 리깅과 애니메이션을 기초부터 배우는 과정\nhttps://inf.run/FAdR9\n\n\n📄INDEX\n0:07 블렌더 최신 버전 설치\n0:33 LTS 뜻\n1:05 버전 별로 노트 보기\n3:12 이전 버전 설치 방법 \n4:37 블렌더를 위한 컴퓨터 사양\n5:16 에셋 번들\n5:57 다운로드 설치 과정 따라하기\n6:50 블렌더 처음 설치했을 때 설정\n\n\n\n🎵 www.youtube.com/@oneul274\nOneul - Birthday Cupcakes\nOneul - Carrot Cake\nOneul - Crochet Heart", "블렌더 설치하기 AtoZ | 구버전 다운로드 방법? LTS 뜻? | 코드모드", "1848827d-6d8e-45ed-9ca8-968d2ef3e57b", "https://www.youtube.com/watch?v=0DZTq6PaZAY", "0DZTq6PaZAY", false, 545, false, 1, "/downloads/코드모드 블렌더/2025-11-15 블렌더 설치하기 AtoZ | 구버전 다운로드 방법? LTS 뜻? | 코드모드/블렌더 설치하기 AtoZ | 구버전 다운로드 방법? LTS 뜻? | 코드모드 [0DZTq6PaZAY].mp4", false, false, 8, [], 98, ~U[2025-11-15 07:25:06Z], ~U[2025-12-23 20:59:59Z], ~U[2025-12-23 20:59:59Z], "블렌더의 최신 버전, LTS 버전, 이전 버전 다운로드 받는 방법\n컴퓨터 최소 사양과 권장 사양 보는 방법 등을 자세히 다뤘습니다.\n\n본 영상은 즐거운 블렌더 아이소메트릭 하우스편 강의 2강입니다.\n\n\n💜블렌더 강의 in 인프런💜\n본격적으로 블렌더를 배우고 싶다면 추천드려요!\n강의를 수강하실 때 아래 링크를 각각 들어가서 장바구니에 담아주시면 저에게 도움이 됩니다. :)\n\n즐거운블렌더 - 아이소메트릭 하우스 : 많은 예제로 다양한 기능을 배우는 과정\nhttps://inf.run/x9TE2\n\n레벨0 입문 필수 : 블렌더를 처음 접하는 사람들을 위한 입문 과정\nhttps://inf.run/ujgR\n레벨1 기초 모델링 : 기본적인 기능을 이해하고 원리를 깨닫는 기초 과정\nhttps://inf.run/FSBC\n레벨2 모델링 연습 : 모델링 실전 위주의 기초 연습 과정\nhttps://inf.run/1ysYt\n레벨3 캐릭터 애니메이션 : 리깅과 애니메이션을 기초부터 배우는 과정\nhttps://inf.run/FAdR9\n\n\n📄INDEX\n0:07 블렌더 최신 버전 설치\n0:33 LTS 뜻\n1:05 버전 별로 노트 보기\n3:12 이전 버전 설치 방법 \n4:37 블렌더를 위한 컴퓨터 사양\n5:16 에셋 번들\n5:57 다운로드 설치 과정 따라하기\n6:50 블렌더 처음 설치했을 때 설정\n\n\n\n🎵 www.youtube.com/@oneul274\nOneul - Birthday Cupcakes\nOneul - Carrot Cake\nOneul - Crochet Heart", "블렌더 설치하기 AtoZ | 구버전 다운로드 방법? LTS 뜻? | 코드모드", "https://www.youtube.com/watch?v=0DZTq6PaZAY", "0DZTq6PaZAY", 545, false, "/downloads/코드모드 블렌더/2025-11-15 블렌더 설치하기 AtoZ | 구버전 다운로드 방법? LTS 뜻? | 코드모드/블렌더 설치하기 AtoZ | 구버전 다운로드 방법? LTS 뜻? | 코드모드 [0DZTq6PaZAY].mp4", false, 8, ~U[2025-11-15 07:25:06Z]] 20:59:59.464 [debug] QUERY OK source="sources" db=0.2ms idle=460.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 20:59:59.465 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-10-30 15:50:01Z], 8] 20:59:59.466 [debug] QUERY OK source="media_items" db=1.0ms idle=3.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["🎉2차 얼리버드 이벤트🎉\n- 12.29까지 40% 할인\n- 본 강의는 연재형 강의로 계속 업데이트 될 예정입니다.\n\n💜즐거운 블렌더 링크💜\n아이소메트릭 하우스 https://inf.run/x9TE2\n\n- 모델링, 텍스처링, 렌더링, 피직스, 파티클, 머티리얼 노드, 애니메이션, 라이브러리에 다양한 노하우까지!\n- 예쁜집을 아이소메트릭하우스 스타일로 만들어보면서 블렌더의 기본기 AtoZ를 배우고 연습해봐요! \n- 완강 후엔 자신만의 모델링을 할 수 있는 노하우와 실력을 얻을 수 있을 거예요. :)\n\n\n💜친절한 블렌더 링크💜\n레벨0 입문 필수 https://inf.run/ujgR \n레벨1 기초 모델링 https://inf.run/FSBC\n레벨2 모델링 연습 https://inf.run/1ysYt\n레벨3 캐릭터 애니메이션 https://inf.run/FAdR9\n\n🗨️강의 다국어 지원 안내\n- 인프런 강의는 한국어 외에 영어, 일본어, 베트남어 지원이 가능합니다.\n- 수강할 때 강의 화면 하단의 설정 키를 통해 자막과 음성 언어를 각각 원하는 언어 타입으로 변경할 수 있습니다.\n- 여러분의 즐거운 블렌더 공부를 응원합니다!\n\n\n\n📄INDEX\n0:00 즐거운 블렌더 아이소메트릭 하우스 강의 소개\n0:50 어떤 것을 배우나요? (커리큘럼)\n2:49 어떤 강의가 나에게 잘 맞을까? (친절한 블렌더 vs 즐거운 블렌더) \n5:09 홍보링크 가이드\n\n#블렌더강좌 #블렌더 #isometric \n\n\n\n🎵 www.youtube.com/@oneul274\nOneul - Rainbow Suncatcher\nOneul - Merry Cherry\nOneul - Strawberry Much\nOneul - Cotton Candy", "나만의 집 만들고 싶은 사람 모여라🏠 | 즐거운 블렌더 아이소메트릭 하우스 | 코드모드", "e83237b6-b767-4e1c-a140-e3245cd6f74c", "https://www.youtube.com/watch?v=jgALDDerb_E", "jgALDDerb_E", false, 330, false, 2, "/downloads/코드모드 블렌더/2025-10-30 나만의 집 만들고 싶은 사람 모여라🏠 | 즐거운 블렌더 아이소메트릭 하우스 | 코드모드/나만의 집 만들고 싶은 사람 모여라🏠 | 즐거운 블렌더 아이소메트릭 하우스 | 코드모드 [jgALDDerb_E].mp4", false, false, 8, [], 98, ~U[2025-10-30 15:50:01Z], ~U[2025-12-23 20:59:59Z], ~U[2025-12-23 20:59:59Z], "🎉2차 얼리버드 이벤트🎉\n- 12.29까지 40% 할인\n- 본 강의는 연재형 강의로 계속 업데이트 될 예정입니다.\n\n💜즐거운 블렌더 링크💜\n아이소메트릭 하우스 https://inf.run/x9TE2\n\n- 모델링, 텍스처링, 렌더링, 피직스, 파티클, 머티리얼 노드, 애니메이션, 라이브러리에 다양한 노하우까지!\n- 예쁜집을 아이소메트릭하우스 스타일로 만들어보면서 블렌더의 기본기 AtoZ를 배우고 연습해봐요! \n- 완강 후엔 자신만의 모델링을 할 수 있는 노하우와 실력을 얻을 수 있을 거예요. :)\n\n\n💜친절한 블렌더 링크💜\n레벨0 입문 필수 https://inf.run/ujgR \n레벨1 기초 모델링 https://inf.run/FSBC\n레벨2 모델링 연습 https://inf.run/1ysYt\n레벨3 캐릭터 애니메이션 https://inf.run/FAdR9\n\n🗨️강의 다국어 지원 안내\n- 인프런 강의는 한국어 외에 영어, 일본어, 베트남어 지원이 가능합니다.\n- 수강할 때 강의 화면 하단의 설정 키를 통해 자막과 음성 언어를 각각 원하는 언어 타입으로 변경할 수 있습니다.\n- 여러분의 즐거운 블렌더 공부를 응원합니다!\n\n\n\n📄INDEX\n0:00 즐거운 블렌더 아이소메트릭 하우스 강의 소개\n0:50 어떤 것을 배우나요? (커리큘럼)\n2:49 어떤 강의가 나에게 잘 맞을까? (친절한 블렌더 vs 즐거운 블렌더) \n5:09 홍보링크 가이드\n\n#블렌더강좌 #블렌더 #isometric \n\n\n\n🎵 www.youtube.com/@oneul274\nOneul - Rainbow Suncatcher\nOneul - Merry Cherry\nOneul - Strawberry Much\nOneul - Cotton Candy", "나만의 집 만들고 싶은 사람 모여라🏠 | 즐거운 블렌더 아이소메트릭 하우스 | 코드모드", "https://www.youtube.com/watch?v=jgALDDerb_E", "jgALDDerb_E", 330, false, "/downloads/코드모드 블렌더/2025-10-30 나만의 집 만들고 싶은 사람 모여라🏠 | 즐거운 블렌더 아이소메트릭 하우스 | 코드모드/나만의 집 만들고 싶은 사람 모여라🏠 | 즐거운 블렌더 아이소메트릭 하우스 | 코드모드 [jgALDDerb_E].mp4", false, 8, ~U[2025-10-30 15:50:01Z]] 20:59:59.467 [debug] QUERY OK source="sources" db=0.2ms idle=4.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 20:59:59.467 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-10-25 14:00:16Z], 8] 20:59:59.469 [debug] QUERY OK source="media_items" db=0.8ms idle=3.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["📄 INDEX \n00:11 넘버패드 없을 때 생기는 문제점\n01:27 해결방법1. Emulate Numpad\n03:10 해결방법2. 3D Viewport Pie Menus (Addons)\n06:05 Numpad 단축키 정리\n\n\n💜친절한 블렌더 - 인프런💜\n본격적으로 블렌더를 배우고 싶다면 추천드려요!\n자세한 내용은 프로필링크를 참고해주세요.\n강의를 수강하실 때 아래 링크를 각각 들어가서 장바구니에 담아주시면 저에게 도움이 됩니다. :)\n\n레벨0 입문 필수 : 블렌더를 처음 접하는 사람들을 위한 입문 과정\nhttps://inf.run/ujgR\n레벨1 기초 모델링 : 기본적인 기능을 이해하고 원리를 깨닫는 기초 과정\nhttps://inf.run/FSBC\n레벨2 모델링 연습 : 모델링 실전 위주의 기초 연습 과정\nhttps://inf.run/1ysYt\n레벨3 캐릭터 애니메이션 : 리깅과 애니메이션을 기초부터 배우는 과정\nhttps://inf.run/FAdR9\n\n#blender #블렌더강좌 #블렌더3d", "넘패드 없이 블렌더 | 코드모드", "df6fe0db-0a5d-4543-932d-3a5257062733", "https://www.youtube.com/watch?v=8nT7tIj3SKw", "8nT7tIj3SKw", false, 377, false, 3, "/downloads/코드모드 블렌더/2025-10-25 넘패드 없이 블렌더 | 코드모드/넘패드 없이 블렌더 | 코드모드 [8nT7tIj3SKw].mp4", false, false, 8, [], 98, ~U[2025-10-25 14:00:16Z], ~U[2025-12-23 20:59:59Z], ~U[2025-12-23 20:59:59Z], "📄 INDEX \n00:11 넘버패드 없을 때 생기는 문제점\n01:27 해결방법1. Emulate Numpad\n03:10 해결방법2. 3D Viewport Pie Menus (Addons)\n06:05 Numpad 단축키 정리\n\n\n💜친절한 블렌더 - 인프런💜\n본격적으로 블렌더를 배우고 싶다면 추천드려요!\n자세한 내용은 프로필링크를 참고해주세요.\n강의를 수강하실 때 아래 링크를 각각 들어가서 장바구니에 담아주시면 저에게 도움이 됩니다. :)\n\n레벨0 입문 필수 : 블렌더를 처음 접하는 사람들을 위한 입문 과정\nhttps://inf.run/ujgR\n레벨1 기초 모델링 : 기본적인 기능을 이해하고 원리를 깨닫는 기초 과정\nhttps://inf.run/FSBC\n레벨2 모델링 연습 : 모델링 실전 위주의 기초 연습 과정\nhttps://inf.run/1ysYt\n레벨3 캐릭터 애니메이션 : 리깅과 애니메이션을 기초부터 배우는 과정\nhttps://inf.run/FAdR9\n\n#blender #블렌더강좌 #블렌더3d", "넘패드 없이 블렌더 | 코드모드", "https://www.youtube.com/watch?v=8nT7tIj3SKw", "8nT7tIj3SKw", 377, false, "/downloads/코드모드 블렌더/2025-10-25 넘패드 없이 블렌더 | 코드모드/넘패드 없이 블렌더 | 코드모드 [8nT7tIj3SKw].mp4", false, 8, ~U[2025-10-25 14:00:16Z]] 20:59:59.469 [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" = ?) [8] 20:59:59.469 [debug] QUERY OK source="media_items" db=0.3ms 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[2025-05-11 11:01:21Z], 8] 20:59:59.471 [debug] QUERY OK source="media_items" db=1.0ms idle=2.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#3danimation #shortfilm #blender \n\n✨마법상점의 빛나는 밤 | Shining Night of the Magic Shop✨\n블렌더로 만든 짧은 3D 애니메이션 입니다! :)\n숨은 재미가 곳곳에 있으니 찾아보세요!\n\n\n\n🎵\nhttps://youtu.be/SN_KvvyfvPA?si=vfcRA3BWZrHwELFA\nhttps://youtu.be/fMeEq9P7EZ0?si=zPI3L5PpRRnTj7zR\n\n\n\n💜친절한 블렌더 - 인프런💜\n배경과 마법사는 친절한 블렌더 레벨2 모델링 연습에서 만들 수 있고\n고양이 캐릭터는 친절한 블렌더 레벨3 캐릭터 애니메이션에서 만들 수 있습니다.\n\n본격적으로 블렌더를 배우고 싶다면 추천드려요!\n강의를 수강하실 때 아래 링크를 각각 들어가서 장바구니에 담아주시면 저에게 도움이 됩니다. :)\n\n레벨0 입문 필수 : 블렌더를 처음 접하는 사람들을 위한 입문 과정\nhttps://inf.run/ujgR\n레벨1 기초 모델링 : 기본적인 기능을 이해하고 원리를 깨닫는 기초 과정\nhttps://inf.run/FSBC\n레벨2 모델링 연습 : 모델링 실전 위주의 기초 연습 과정\nhttps://inf.run/1ysYt\n레벨3 캐릭터 애니메이션 : 리깅과 애니메이션을 기초부터 배우는 과정\nhttps://inf.run/FAdR9", "[블렌더 3D 애니메이션] 마법상점의 빛나는 밤 | 코드모드", "7459ae40-5b1e-4b26-9916-8587634d47db", "https://www.youtube.com/watch?v=qpdkzqx0KXY", "qpdkzqx0KXY", false, 68, false, 4, "/downloads/코드모드 블렌더/2025-05-11 [블렌더 3D 애니메이션] 마법상점의 빛나는 밤 | 코드모드/[블렌더 3D 애니메이션] 마법상점의 빛나는 밤 | 코드모드 [qpdkzqx0KXY].mp4", false, false, 8, [], 98, ~U[2025-05-11 11:01:21Z], ~U[2025-12-23 20:59:59Z], ~U[2025-12-23 20:59:59Z], "#3danimation #shortfilm #blender \n\n✨마법상점의 빛나는 밤 | Shining Night of the Magic Shop✨\n블렌더로 만든 짧은 3D 애니메이션 입니다! :)\n숨은 재미가 곳곳에 있으니 찾아보세요!\n\n\n\n🎵\nhttps://youtu.be/SN_KvvyfvPA?si=vfcRA3BWZrHwELFA\nhttps://youtu.be/fMeEq9P7EZ0?si=zPI3L5PpRRnTj7zR\n\n\n\n💜친절한 블렌더 - 인프런💜\n배경과 마법사는 친절한 블렌더 레벨2 모델링 연습에서 만들 수 있고\n고양이 캐릭터는 친절한 블렌더 레벨3 캐릭터 애니메이션에서 만들 수 있습니다.\n\n본격적으로 블렌더를 배우고 싶다면 추천드려요!\n강의를 수강하실 때 아래 링크를 각각 들어가서 장바구니에 담아주시면 저에게 도움이 됩니다. :)\n\n레벨0 입문 필수 : 블렌더를 처음 접하는 사람들을 위한 입문 과정\nhttps://inf.run/ujgR\n레벨1 기초 모델링 : 기본적인 기능을 이해하고 원리를 깨닫는 기초 과정\nhttps://inf.run/FSBC\n레벨2 모델링 연습 : 모델링 실전 위주의 기초 연습 과정\nhttps://inf.run/1ysYt\n레벨3 캐릭터 애니메이션 : 리깅과 애니메이션을 기초부터 배우는 과정\nhttps://inf.run/FAdR9", "[블렌더 3D 애니메이션] 마법상점의 빛나는 밤 | 코드모드", "https://www.youtube.com/watch?v=qpdkzqx0KXY", "qpdkzqx0KXY", 68, false, "/downloads/코드모드 블렌더/2025-05-11 [블렌더 3D 애니메이션] 마법상점의 빛나는 밤 | 코드모드/[블렌더 3D 애니메이션] 마법상점의 빛나는 밤 | 코드모드 [qpdkzqx0KXY].mp4", false, 8, ~U[2025-05-11 11:01:21Z]] 20:59:59.471 [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" = ?) [8] 20:59:59.472 [debug] QUERY OK source="media_items" db=0.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[2025-04-20 12:00:51Z], 8] 20:59:59.473 [debug] QUERY OK source="media_items" db=0.8ms idle=3.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["💜친절한 블렌더 - 인프런💜\n본격적으로 블렌더를 배우고 싶다면 추천드려요!\n강의를 수강하실 때 아래 링크를 각각 들어가서 장바구니에 담아주시면 저에게 도움이 됩니다. :)\n\n레벨0 입문 필수 : 블렌더를 처음 접하는 사람들을 위한 입문 과정\nhttps://inf.run/ujgR\n레벨1 기초 모델링 : 기본적인 기능을 이해하고 원리를 깨닫는 기초 과정\nhttps://inf.run/FSBC\n레벨2 모델링 연습 : 모델링 실전 위주의 기초 연습 과정\nhttps://inf.run/1ysYt\n레벨3 캐릭터 애니메이션 : 리깅과 애니메이션을 기초부터 배우는 과정\nhttps://inf.run/FAdR9\n\n- 인프런이 처음이신 분들은 첫구매 25%할인 가능합니다.\n- 강의 여러 개도 한 번에 구매 시 할인 적용 가능해요.\n- 다음 강의도 준비 중이니까 기대해주세요! :D\n\n\n🎵\nhttps://youtu.be/loCoQfr6RW4?feature=shared\nhttps://youtu.be/l0tjWt-j7zY?feature=shared", "친절한 블렌더 레벨테스트 | 코드모드", "fa2588ed-fa57-4092-862d-024d23f3355b", "https://www.youtube.com/watch?v=Vc7S2VzwHcI", "Vc7S2VzwHcI", false, 350, false, 5, "/downloads/코드모드 블렌더/2025-04-20 친절한 블렌더 레벨테스트 | 코드모드/친절한 블렌더 레벨테스트 | 코드모드 [Vc7S2VzwHcI].mp4", false, false, 8, [], 98, ~U[2025-04-20 12:00:51Z], ~U[2025-12-23 20:59:59Z], ~U[2025-12-23 20:59:59Z], "💜친절한 블렌더 - 인프런💜\n본격적으로 블렌더를 배우고 싶다면 추천드려요!\n강의를 수강하실 때 아래 링크를 각각 들어가서 장바구니에 담아주시면 저에게 도움이 됩니다. :)\n\n레벨0 입문 필수 : 블렌더를 처음 접하는 사람들을 위한 입문 과정\nhttps://inf.run/ujgR\n레벨1 기초 모델링 : 기본적인 기능을 이해하고 원리를 깨닫는 기초 과정\nhttps://inf.run/FSBC\n레벨2 모델링 연습 : 모델링 실전 위주의 기초 연습 과정\nhttps://inf.run/1ysYt\n레벨3 캐릭터 애니메이션 : 리깅과 애니메이션을 기초부터 배우는 과정\nhttps://inf.run/FAdR9\n\n- 인프런이 처음이신 분들은 첫구매 25%할인 가능합니다.\n- 강의 여러 개도 한 번에 구매 시 할인 적용 가능해요.\n- 다음 강의도 준비 중이니까 기대해주세요! :D\n\n\n🎵\nhttps://youtu.be/loCoQfr6RW4?feature=shared\nhttps://youtu.be/l0tjWt-j7zY?feature=shared", "친절한 블렌더 레벨테스트 | 코드모드", "https://www.youtube.com/watch?v=Vc7S2VzwHcI", "Vc7S2VzwHcI", 350, false, "/downloads/코드모드 블렌더/2025-04-20 친절한 블렌더 레벨테스트 | 코드모드/친절한 블렌더 레벨테스트 | 코드모드 [Vc7S2VzwHcI].mp4", false, 8, ~U[2025-04-20 12:00:51Z]] 20:59:59.474 [debug] QUERY OK source="sources" db=0.1ms idle=3.8ms UPDATE "sources" SET "last_indexed_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2025-12-23 20:59:59Z], ~U[2025-12-23 20:59:59Z], 8] 20:59:59.474 [debug] QUERY OK source="media_items" db=0.6ms 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 ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [8] 20:59:59.478 [debug] QUERY OK source="tasks" db=0.2ms idle=2.6ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [7407, 23904, ~U[2025-12-23 20:59:59Z], ~U[2025-12-23 20:59:59Z]] 20:59:59.485 [info] {"args":{"id":23904},"id":7407,"meta":{},"system_time":1766523599485245937,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 20:59:59.485 [debug] QUERY OK source="media_items" db=0.2ms 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."id" = ?) [23904] 20:59:59.486 [info] User scripts lifecyle file either not present or is empty. Skipping. 20:59:59.486 [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" = ?) [8] 20:59:59.487 [debug] QUERY OK source="media_profiles" db=0.4ms idle=1.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 20:59:59.488 [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 [23904] 20:59:59.488 [debug] QUERY OK source="media_metadata" db=0.2ms 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" = ?) [23904] 20:59:59.489 [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] 20:59:59.489 [debug] QUERY OK source="settings" db=0.2ms idle=1.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:59:59.490 [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 [] 20:59:59.490 [debug] Running yt-dlp command for action: get_downloadable_status 20:59:59.491 [debug] QUERY OK source="media_items" db=0.3ms 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")))) [8] 20:59:59.491 [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 [] 20:59:59.491 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=1.5ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [8] 20:59:59.491 [debug] QUERY OK source="settings" db=0.3ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 20:59:59.492 [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 [] 20:59:59.492 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e9/b0/e9b0a179fe2d417450e1af0e2ef3576b0b145ed984ff23138baf5c06f42166a4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 20:59:59.493 [debug] QUERY OK source="tasks" db=0.2ms idle=1.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [7408, 8, ~U[2025-12-23 20:59:59Z], ~U[2025-12-23 20:59:59Z]] 20:59:59.493 [info] {"args":{"id":8},"id":7383,"meta":{},"state":"success","max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","duration":11743318,"event":"job:stop","queue_time":785939,"attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 21:00:00.714 [info] {"source":"oban","duration":304,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:00:02.359 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e9/b0/e9b0a179fe2d417450e1af0e2ef3576b0b145ed984ff23138baf5c06f42166a4.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: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 21:00:02.359 [debug] Running yt-dlp command for action: download 21:00:02.360 [debug] QUERY OK source="settings" db=0.3ms idle=1356.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:00:02.360 [debug] QUERY OK source="settings" db=0.2ms idle=1356.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:00:02.360 [debug] QUERY OK source="settings" db=0.1ms idle=1357.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:00:02.361 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/83/b6/83b6e751879f6a70d8e6de63044b48d2e68775a1667dd4242ce49d0a03bdc36a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 21:00:05.631 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/83/b6/83b6e751879f6a70d8e6de63044b48d2e68775a1667dd4242ce49d0a03bdc36a.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 WARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 21:00:05.631 [error] yt-dlp download error for media item #23904: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 21:00:05.632 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23904},"id":7407,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6146946,"event":"job:exception","queue_time":484193,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 21:00:18.861 [info] {"source":"oban","duration":1630,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:00:22.847 [info] {"args":{"id":23904},"id":7407,"meta":{},"system_time":1766523622847101226,"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"]} 21:00:22.847 [debug] QUERY OK source="media_items" db=0.3ms idle=843.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" = ?) [23904] 21:00:22.848 [info] User scripts lifecyle file either not present or is empty. Skipping. 21:00:22.848 [debug] QUERY OK source="sources" db=0.2ms idle=844.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 21:00:22.848 [debug] QUERY OK source="media_profiles" db=0.1ms idle=844.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] 21:00:22.849 [debug] QUERY OK source="media_items" db=0.2ms idle=28.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 [23904] 21:00:22.861 [debug] QUERY OK source="media_metadata" db=0.1ms idle=13.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" = ?) [23904] 21:00:22.861 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=13.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 21:00:22.862 [debug] QUERY OK source="settings" db=0.1ms idle=13.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:00:22.862 [debug] QUERY OK source="settings" db=0.1ms idle=13.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:00:22.862 [debug] Running yt-dlp command for action: get_downloadable_status 21:00:22.872 [debug] QUERY OK source="settings" db=0.2ms 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 [] 21:00:22.872 [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 [] 21:00:22.872 [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 [] 21:00:22.873 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/48/b6/48b6eec58bcc05d882289d2c4f59ef2755582d8d93aa60c35a5a2d401bc4742d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 21:00:25.973 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/48/b6/48b6eec58bcc05d882289d2c4f59ef2755582d8d93aa60c35a5a2d401bc4742d.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: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 21:00:25.973 [debug] Running yt-dlp command for action: download 21:00:25.974 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1970.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:00:25.975 [debug] QUERY OK source="settings" db=0.1ms idle=1971.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:00:25.975 [debug] QUERY OK source="settings" db=0.1ms idle=1971.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:00:25.975 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/7a/46/7a46348ca21a3e8502b0b6641522aaaf6f6640b62377d76028afb2412d0c2a55.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 21:00:29.471 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/7a/46/7a46348ca21a3e8502b0b6641522aaaf6f6640b62377d76028afb2412d0c2a55.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 WARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 21:00:29.471 [error] yt-dlp download error for media item #23904: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 21:00:29.472 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23904},"id":7407,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6624607,"event":"job:exception","queue_time":193976,"attempt":2,"tags":["media_item","media_fetching","show_in_dashboard"]} 21:00:48.864 [info] {"source":"oban","duration":1655,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:00:48.886 [info] {"args":{"id":23904},"id":7407,"meta":{},"system_time":1766523648886247654,"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"]} 21:00:48.886 [debug] QUERY OK source="media_items" db=0.1ms idle=1883.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" = ?) [23904] 21:00:48.886 [info] User scripts lifecyle file either not present or is empty. Skipping. 21:00:48.887 [debug] QUERY OK source="sources" db=0.1ms idle=1009.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" = ?) [8] 21:00:48.887 [debug] QUERY OK source="media_profiles" db=0.1ms idle=23.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] 21:00:48.888 [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 [23904] 21:00:48.913 [debug] QUERY OK source="media_metadata" db=0.1ms idle=27.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" = ?) [23904] 21:00:48.913 [debug] QUERY OK source="media_profiles" db=0.1ms idle=26.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] 21:00:48.914 [debug] QUERY OK source="settings" db=0.1ms 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 [] 21:00:48.914 [debug] QUERY OK source="settings" db=0.1ms 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 [] 21:00:48.914 [debug] Running yt-dlp command for action: get_downloadable_status 21:00:48.915 [debug] QUERY OK source="settings" db=0.1ms 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 [] 21:00:48.915 [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 [] 21:00:48.915 [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 [] 21:00:48.915 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4e/5d/4e5d51b1d87e494ca756c95deb8b141315e04bcd73b0bf8d5d0f3354f53b4392.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 21:00:51.805 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4e/5d/4e5d51b1d87e494ca756c95deb8b141315e04bcd73b0bf8d5d0f3354f53b4392.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: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 21:00:51.805 [debug] Running yt-dlp command for action: download 21:00:51.806 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1802.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:00:51.806 [debug] QUERY OK source="settings" db=0.3ms idle=1802.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:00:51.806 [debug] QUERY OK source="settings" db=0.1ms idle=1803.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:00:51.807 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/c8/fe/c8fe7fbac242b06dd3611ecc3c2bc13f042f878c137842ec82c2d54ccbd7ded6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 21:00:55.167 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/c8/fe/c8fe7fbac242b06dd3611ecc3c2bc13f042f878c137842ec82c2d54ccbd7ded6.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 WARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 21:00:55.167 [error] yt-dlp download error for media item #23904: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 21:00:55.168 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23904},"id":7407,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6281523,"event":"job:exception","queue_time":413590,"attempt":3,"tags":["media_item","media_fetching","show_in_dashboard"]} 21:01:00.715 [info] {"source":"oban","duration":311,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:01:18.866 [info] {"source":"oban","duration":1358,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:01:18.954 [info] {"args":{"id":23904},"id":7407,"meta":{},"system_time":1766523678954561136,"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"]} 21:01:18.955 [debug] QUERY OK source="media_items" db=0.2ms idle=1009.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" = ?) [23904] 21:01:18.955 [info] User scripts lifecyle file either not present or is empty. Skipping. 21:01:18.955 [debug] QUERY OK source="sources" db=0.3ms idle=952.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 21:01:18.956 [debug] QUERY OK source="media_profiles" db=0.1ms idle=89.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] 21:01:18.956 [debug] QUERY OK source="media_items" db=0.2ms queue=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 [23904] 21:01:18.984 [debug] QUERY OK source="media_metadata" db=0.2ms idle=29.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" = ?) [23904] 21:01:18.984 [debug] QUERY OK source="media_profiles" db=0.1ms idle=29.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] 21:01:18.985 [debug] QUERY OK source="settings" db=0.2ms idle=29.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:01:18.986 [debug] QUERY OK source="settings" db=0.2ms idle=29.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:01:18.986 [debug] Running yt-dlp command for action: get_downloadable_status 21:01:18.987 [debug] QUERY OK source="settings" db=0.1ms idle=30.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:01:18.987 [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 [] 21:01:18.987 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:01:18.987 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/af/1a/af1ad5962c73d968579bb739130ce79a52e89ca60aab20a696255e241d208e95.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 21:01:21.646 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/af/1a/af1ad5962c73d968579bb739130ce79a52e89ca60aab20a696255e241d208e95.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: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 21:01:21.646 [debug] Running yt-dlp command for action: download 21:01:21.647 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1643.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:01:21.647 [debug] QUERY OK source="settings" db=0.1ms idle=1644.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:01:21.648 [debug] QUERY OK source="settings" db=0.2ms idle=1644.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:01:21.648 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/92/79/927971bb518b3be556285bf718c4defad65202f57b6ce71c8d20e938a924ed83.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 21:01:24.940 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/92/79/927971bb518b3be556285bf718c4defad65202f57b6ce71c8d20e938a924ed83.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 WARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 21:01:24.940 [error] yt-dlp download error for media item #23904: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 21:01:24.941 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23904},"id":7407,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":5986506,"event":"job:exception","queue_time":785384,"attempt":4,"tags":["media_item","media_fetching","show_in_dashboard"]} 21:01:48.868 [info] {"source":"oban","duration":1657,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:01:57.033 [info] {"args":{"id":23904},"id":7407,"meta":{},"system_time":1766523717033413826,"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"]} 21:01:57.034 [debug] QUERY OK source="media_items" db=0.2ms idle=1030.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" = ?) [23904] 21:01:57.034 [info] User scripts lifecyle file either not present or is empty. Skipping. 21:01:57.034 [debug] QUERY OK source="sources" db=0.3ms idle=1030.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 21:01:57.034 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1009.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] 21:01:57.035 [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 [23904] 21:01:57.045 [debug] QUERY OK source="media_metadata" db=0.1ms queue=0.1ms idle=12.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" = ?) [23904] 21:01:57.046 [debug] QUERY OK source="media_profiles" db=0.1ms idle=11.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 21:01:57.046 [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 [] 21:01:57.046 [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 [] 21:01:57.047 [debug] Running yt-dlp command for action: get_downloadable_status 21:01:57.047 [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 [] 21:01:57.047 [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 [] 21:01:57.048 [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 [] 21:01:57.048 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c7/e3/c7e36e8b33ef9d63af5a6fed58f66c4285600742c1ca833af9a41a9ff798ee16.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 21:02:00.031 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c7/e3/c7e36e8b33ef9d63af5a6fed58f66c4285600742c1ca833af9a41a9ff798ee16.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: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 21:02:00.031 [debug] Running yt-dlp command for action: download 21:02:00.032 [debug] QUERY OK source="settings" db=0.4ms idle=1028.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:02:00.033 [debug] QUERY OK source="settings" db=0.3ms queue=0.3ms idle=1029.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:02:00.033 [debug] QUERY OK source="settings" db=0.1ms idle=1029.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:02:00.033 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/2b/41/2b411cd54a6e210c7ffbb870a2479aeeade25cce292e30600d87a2e8a99edfd6.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 21:02:00.716 [info] {"source":"oban","duration":465,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:02:03.439 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/2b/41/2b411cd54a6e210c7ffbb870a2479aeeade25cce292e30600d87a2e8a99edfd6.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 WARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 21:02:03.439 [error] yt-dlp download error for media item #23904: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 21:02:03.440 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23904},"id":7407,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6405980,"event":"job:exception","queue_time":91221,"attempt":5,"tags":["media_item","media_fetching","show_in_dashboard"]} 21:02:18.870 [info] {"source":"oban","duration":1379,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:02:48.873 [info] {"source":"oban","duration":1702,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:02:54.147 [info] {"args":{"id":23904},"id":7407,"meta":{},"system_time":1766523774147363822,"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"]} 21:02:54.148 [debug] QUERY OK source="media_items" db=0.2ms idle=144.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" = ?) [23904] 21:02:54.148 [info] User scripts lifecyle file either not present or is empty. Skipping. 21:02:54.148 [debug] QUERY OK source="sources" db=0.2ms idle=144.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 21:02:54.148 [debug] QUERY OK source="media_profiles" db=0.1ms idle=145.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] 21:02:54.149 [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 [23904] 21:02:54.150 [debug] QUERY OK source="media_metadata" db=0.1ms idle=2.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" = ?) [23904] 21:02:54.150 [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] 21:02:54.151 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:02:54.151 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:02:54.151 [debug] Running yt-dlp command for action: get_downloadable_status 21:02:54.152 [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 [] 21:02:54.152 [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 [] 21:02:54.153 [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 [] 21:02:54.153 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/41/09/41095ea4d50d65ef04cf99f9af86090a9a5f028aeb578b68a13363cf40e17f11.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 21:02:57.312 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/41/09/41095ea4d50d65ef04cf99f9af86090a9a5f028aeb578b68a13363cf40e17f11.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: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 21:02:57.312 [debug] Running yt-dlp command for action: download 21:02:57.313 [debug] QUERY OK source="settings" db=0.2ms idle=1309.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:02:57.314 [debug] QUERY OK source="settings" db=0.3ms idle=1310.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:02:57.314 [debug] QUERY OK source="settings" db=0.1ms idle=1310.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:02:57.314 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/f2/c6/f2c63f12a75c5f5a9eb243f6d42a6a0cb5a93b2080e07bd85effba00efc01aa1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 21:03:00.718 [info] {"source":"oban","duration":602,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:03:00.866 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/f2/c6/f2c63f12a75c5f5a9eb243f6d42a6a0cb5a93b2080e07bd85effba00efc01aa1.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 WARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 21:03:00.866 [error] yt-dlp download error for media item #23904: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 21:03:00.867 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23904},"id":7407,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6719392,"event":"job:exception","queue_time":706862,"attempt":6,"tags":["media_item","media_fetching","show_in_dashboard"]} 21:03:18.875 [info] {"source":"oban","duration":1622,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:03:48.878 [info] {"source":"oban","duration":1864,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:04:00.719 [info] {"source":"oban","duration":545,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:04:18.880 [info] {"source":"oban","duration":1147,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:04:27.352 [info] {"args":{"id":23904},"id":7407,"meta":{},"system_time":1766523867352360917,"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"]} 21:04:27.353 [debug] QUERY OK source="media_items" db=0.4ms idle=1349.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" = ?) [23904] 21:04:27.353 [info] User scripts lifecyle file either not present or is empty. Skipping. 21:04:27.353 [debug] QUERY OK source="sources" db=0.2ms idle=1350.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 21:04:27.354 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1010.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] 21:04:27.354 [debug] QUERY OK source="media_items" db=0.3ms 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 [23904] 21:04:27.355 [debug] QUERY OK source="media_metadata" db=0.1ms queue=0.1ms 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" = ?) [23904] 21:04:27.356 [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] 21:04:27.356 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:04:27.356 [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 [] 21:04:27.356 [debug] Running yt-dlp command for action: get_downloadable_status 21:04:27.357 [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 [] 21:04:27.357 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:04:27.357 [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 [] 21:04:27.358 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7f/b9/7fb967813b7f8b23e933f6147207f3beefba4c835a757dc801e7329fab7de8ed.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 21:04:30.175 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/7f/b9/7fb967813b7f8b23e933f6147207f3beefba4c835a757dc801e7329fab7de8ed.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: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 21:04:30.176 [debug] Running yt-dlp command for action: download 21:04:30.176 [debug] QUERY OK source="settings" db=0.3ms idle=1172.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:04:30.177 [debug] QUERY OK source="settings" db=0.2ms idle=1173.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:04:30.177 [debug] QUERY OK source="settings" db=0.1ms idle=1173.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:04:30.177 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/e6/87/e68753f95746a77260f77ca2b37d739e6ae06b7f1b6f35087698c797a18d514e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 21:04:33.708 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/e6/87/e68753f95746a77260f77ca2b37d739e6ae06b7f1b6f35087698c797a18d514e.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 WARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 21:04:33.709 [error] yt-dlp download error for media item #23904: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 21:04:33.710 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23904},"id":7407,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6356985,"event":"job:exception","queue_time":484450,"attempt":7,"tags":["media_item","media_fetching","show_in_dashboard"]} 21:04:48.882 [info] {"source":"oban","duration":1441,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:05:00.720 [info] {"source":"oban","duration":294,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:05:18.884 [info] {"source":"oban","duration":1299,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:05:48.886 [info] {"source":"oban","duration":1359,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:06:00.721 [info] {"source":"oban","duration":530,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:06:18.888 [info] {"source":"oban","duration":871,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:06:48.890 [info] {"source":"oban","duration":830,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:07:00.724 [info] {"source":"oban","duration":475,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:07:01.757 [info] {"args":{"id":23904},"id":7407,"meta":{},"system_time":1766524021757099881,"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"]} 21:07:01.757 [debug] QUERY OK source="media_items" db=0.2ms idle=1754.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" = ?) [23904] 21:07:01.757 [info] User scripts lifecyle file either not present or is empty. Skipping. 21:07:01.758 [debug] QUERY OK source="sources" db=0.1ms idle=1033.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 21:07:01.758 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=1009.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] 21:07:01.759 [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 [23904] 21:07:01.762 [debug] QUERY OK source="media_metadata" db=0.1ms idle=5.6ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [23904] 21:07:01.763 [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] 21:07:01.763 [debug] QUERY OK source="settings" db=0.1ms idle=5.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:07:01.764 [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 [] 21:07:01.764 [debug] Running yt-dlp command for action: get_downloadable_status 21:07:01.797 [debug] QUERY OK source="settings" db=0.2ms idle=37.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:07:01.797 [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 [] 21:07:01.798 [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 [] 21:07:01.798 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b6/80/b680a382b437bbf627fea59227d390aff264a85dcfb24bcd478cf0ba4e98dec7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 21:07:04.694 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b6/80/b680a382b437bbf627fea59227d390aff264a85dcfb24bcd478cf0ba4e98dec7.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: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 21:07:04.695 [debug] Running yt-dlp command for action: download 21:07:04.696 [debug] QUERY OK source="settings" db=0.6ms idle=1691.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:07:04.696 [debug] QUERY OK source="settings" db=0.5ms idle=1692.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:07:04.698 [debug] QUERY OK source="settings" db=1.0ms idle=1693.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:07:04.698 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/c3/09/c309191ba6975fe2c570a6e0496918d0575b7c37130be1dcbb23dc28b6059862.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 21:07:08.132 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/c3/09/c309191ba6975fe2c570a6e0496918d0575b7c37130be1dcbb23dc28b6059862.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 WARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 21:07:08.133 [error] yt-dlp download error for media item #23904: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 21:07:08.134 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23904},"id":7407,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6376149,"event":"job:exception","queue_time":46760,"attempt":8,"tags":["media_item","media_fetching","show_in_dashboard"]} 21:07:18.893 [info] {"source":"oban","duration":1763,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:07:48.895 [info] {"source":"oban","duration":1273,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:08:00.725 [info] {"source":"oban","duration":484,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:08:18.897 [info] {"source":"oban","duration":900,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:08:48.900 [info] {"source":"oban","duration":1839,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:09:00.727 [info] {"source":"oban","duration":775,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:09:18.903 [info] {"source":"oban","duration":1782,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:09:48.906 [info] {"source":"oban","duration":1652,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:10:00.729 [info] {"source":"oban","duration":579,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:10:18.908 [info] {"source":"oban","duration":1289,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:10:48.910 [info] {"source":"oban","duration":1083,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:11:00.730 [info] {"source":"oban","duration":500,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:11:18.913 [info] {"source":"oban","duration":1276,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:11:40.323 [info] {"args":{"id":23904},"id":7407,"meta":{},"system_time":1766524300323300148,"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"]} 21:11:40.323 [debug] QUERY OK source="media_items" db=0.2ms idle=319.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" = ?) [23904] 21:11:40.324 [info] User scripts lifecyle file either not present or is empty. Skipping. 21:11:40.324 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=319.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" = ?) [8] 21:11:40.325 [debug] QUERY OK source="media_profiles" db=0.2ms idle=320.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] 21:11:40.325 [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 [23904] 21:11:40.344 [debug] QUERY OK source="media_metadata" db=0.1ms idle=21.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" = ?) [23904] 21:11:40.344 [debug] QUERY OK source="media_profiles" db=0.1ms idle=20.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] 21:11:40.345 [debug] QUERY OK source="settings" db=0.1ms idle=20.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:11:40.345 [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 [] 21:11:40.345 [debug] Running yt-dlp command for action: get_downloadable_status 21:11:40.346 [debug] QUERY OK source="settings" db=0.1ms 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 [] 21:11:40.346 [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 [] 21:11:40.347 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:11:40.347 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/82/f0/82f0694e93a4ba9ff8e9205e2ded9a1981509aac45a5b8084ce794ed4b8484b3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 21:11:43.263 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/82/f0/82f0694e93a4ba9ff8e9205e2ded9a1981509aac45a5b8084ce794ed4b8484b3.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: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 21:11:43.264 [debug] Running yt-dlp command for action: download 21:11:43.264 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1260.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:11:43.265 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1260.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:11:43.265 [debug] QUERY OK source="settings" db=0.2ms idle=1261.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:11:43.266 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/31/fd/31fdc3a45fe10f38f8bc9c1078ead3e5d9593f95cf29d8c900bca11810e02393.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 21:11:46.707 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/31/fd/31fdc3a45fe10f38f8bc9c1078ead3e5d9593f95cf29d8c900bca11810e02393.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 WARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 21:11:46.707 [error] yt-dlp download error for media item #23904: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 21:11:46.709 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23904},"id":7407,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6384884,"event":"job:exception","queue_time":188930,"attempt":9,"tags":["media_item","media_fetching","show_in_dashboard"]} 21:11:48.915 [info] {"source":"oban","duration":1554,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:12:00.733 [info] {"source":"oban","duration":549,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:12:18.917 [info] {"source":"oban","duration":1095,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:12:48.919 [info] {"source":"oban","duration":1472,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:13:00.734 [info] {"source":"oban","duration":246,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:13:18.921 [info] {"source":"oban","duration":1704,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:13:48.924 [info] {"source":"oban","duration":2023,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:13:55.599 [info] {"args":{"id":9},"id":7393,"meta":{},"system_time":1766524435599764339,"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"]} 21:13:55.600 [debug] QUERY OK source="sources" db=0.2ms idle=1595.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:13:55.600 [debug] QUERY OK source="settings" db=0.1ms idle=1596.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:13:55.602 [debug] QUERY OK source="media_items" db=0.9ms idle=1011.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")))) [9] 21:13:55.602 [debug] QUERY OK source="media_items" db=0.2ms idle=9.8ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [9] 21:13:55.602 [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] 21:13:55.603 [debug] QUERY OK source="settings" db=0.1ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:13:55.603 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:13:55.617 [debug] QUERY OK source="media_items" db=1.3ms idle=13.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."source_id" = ?) ORDER BY m0."uploaded_at" DESC LIMIT 50 OFFSET 20 [9] 21:13:55.618 [debug] Running yt-dlp command for action: get_media_attributes_for_collection 21:13:55.618 [debug] Current batch of media processed. Will check again in 1000ms 21:13:55.618 [debug] QUERY OK source="settings" db=0.2ms idle=15.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:13:55.618 [debug] QUERY OK source="settings" db=0.1ms idle=15.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:13:55.619 [debug] QUERY OK source="settings" db=0.0ms 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 [] 21:13:55.619 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@chesterkrsk --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/65/be/65bec0a5998291d5a14749326a587b3dc212289ff1763e9b1473a068b22d6905.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/4d/52/4d52965abf80f87c8321997e62fa9434ca14c7faedb4c24092871422dd91304c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 21:13:56.619 [debug] Current batch of media processed. Will check again in 1000ms 21:13:57.620 [debug] Current batch of media processed. Will check again in 1000ms 21:13:58.621 [debug] Current batch of media processed. Will check again in 1000ms 21:13:59.622 [debug] Current batch of media processed. Will check again in 1000ms 21:14:00.624 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#chester", "duration" => 1210, "filename" => "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-12-12 How to Make Chesterfield/How to Make Chesterfield [DolZdm3LYCI].mp4", "id" => "DolZdm3LYCI", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=DolZdm3LYCI", "playlist_index" => 1, "timestamp" => 1765558832, "title" => "How to Make Chesterfield", "upload_date" => "20251212"} 21:14:00.624 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1619.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [9] 21:14:00.625 [debug] QUERY OK source="sources" db=0.2ms idle=1620.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:00.626 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=1620.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-12 17:00:32Z], 9] 21:14:00.627 [debug] QUERY OK source="media_items" db=1.2ms idle=1024.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#chester", "How to Make Chesterfield", "f210c70f-247f-48d9-8f38-97b1987f422b", "https://www.youtube.com/watch?v=DolZdm3LYCI", "DolZdm3LYCI", false, 1210, false, 1, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-12-12 How to Make Chesterfield/How to Make Chesterfield [DolZdm3LYCI].mp4", false, false, 9, [], 98, ~U[2025-12-12 17:00:32Z], ~U[2025-12-23 21:14:00Z], ~U[2025-12-23 21:14:00Z], "#chester", "How to Make Chesterfield", "https://www.youtube.com/watch?v=DolZdm3LYCI", "DolZdm3LYCI", 1210, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-12-12 How to Make Chesterfield/How to Make Chesterfield [DolZdm3LYCI].mp4", false, 9, ~U[2025-12-12 17:00:32Z]] 21:14:00.628 [debug] QUERY OK source="sources" db=0.1ms idle=23.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:00.628 [debug] QUERY OK source="media_profiles" db=0.3ms 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] 21:14:00.629 [debug] QUERY OK source="media_items" db=0.2ms 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 [26033] 21:14:00.629 [debug] Current batch of media processed. Will check again in 1000ms 21:14:00.736 [info] {"source":"oban","duration":487,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:14:01.630 [debug] Current batch of media processed. Will check again in 1000ms 21:14:02.632 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#chester", "duration" => 855, "filename" => "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-12-10 Handcrafted Chesterfield Sofa Build/Handcrafted Chesterfield Sofa Build [ISTG4DgSWbA].mp4", "id" => "ISTG4DgSWbA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=ISTG4DgSWbA", "playlist_index" => 2, "timestamp" => 1765386037, "title" => "Handcrafted Chesterfield Sofa Build", "upload_date" => "20251210"} 21:14:02.632 [debug] QUERY OK source="sources" db=0.2ms idle=628.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [9] 21:14:02.633 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=628.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:02.634 [debug] QUERY OK source="media_items" db=0.7ms idle=629.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-10 17:00:37Z], 9] 21:14:02.635 [debug] QUERY OK source="media_items" db=0.5ms idle=630.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#chester", "Handcrafted Chesterfield Sofa Build", "332bb406-0144-4e7f-83ca-9c9817079140", "https://www.youtube.com/watch?v=ISTG4DgSWbA", "ISTG4DgSWbA", false, 855, false, 2, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-12-10 Handcrafted Chesterfield Sofa Build/Handcrafted Chesterfield Sofa Build [ISTG4DgSWbA].mp4", false, false, 9, [], 98, ~U[2025-12-10 17:00:37Z], ~U[2025-12-23 21:14:02Z], ~U[2025-12-23 21:14:02Z], "#chester", "Handcrafted Chesterfield Sofa Build", "https://www.youtube.com/watch?v=ISTG4DgSWbA", "ISTG4DgSWbA", 855, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-12-10 Handcrafted Chesterfield Sofa Build/Handcrafted Chesterfield Sofa Build [ISTG4DgSWbA].mp4", false, 9, ~U[2025-12-10 17:00:37Z]] 21:14:02.635 [debug] QUERY OK source="sources" db=0.4ms idle=28.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:02.636 [debug] QUERY OK source="media_profiles" db=0.4ms 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] 21:14:02.637 [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 [25473] 21:14:02.637 [debug] Current batch of media processed. Will check again in 1000ms 21:14:03.638 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Build a soft upholstered chair from scratch — frame, foam, fabric. A clean, simple DIY furniture project for any home.", "duration" => 909, "filename" => "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-12-06 Custom Soft Chair DIY — Simple, Clean Result/Custom Soft Chair DIY — Simple, Clean Result [qu5-pl6cuSY].mp4", "id" => "qu5-pl6cuSY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=qu5-pl6cuSY", "playlist_index" => 3, "timestamp" => 1765040484, "title" => "Custom Soft Chair DIY — Simple, Clean Result", "upload_date" => "20251206"} 21:14:03.639 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1003.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [9] 21:14:03.640 [debug] QUERY OK source="sources" db=0.1ms idle=1003.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:03.641 [debug] QUERY OK source="media_items" db=0.7ms idle=1003.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-06 17:01:24Z], 9] 21:14:03.642 [debug] QUERY OK source="media_items" db=0.5ms idle=1004.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Build a soft upholstered chair from scratch — frame, foam, fabric. A clean, simple DIY furniture project for any home.", "Custom Soft Chair DIY — Simple, Clean Result", "e229b44c-35f3-4de8-b88c-75a1680ea165", "https://www.youtube.com/watch?v=qu5-pl6cuSY", "qu5-pl6cuSY", false, 909, false, 3, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-12-06 Custom Soft Chair DIY — Simple, Clean Result/Custom Soft Chair DIY — Simple, Clean Result [qu5-pl6cuSY].mp4", false, false, 9, [], 98, ~U[2025-12-06 17:01:24Z], ~U[2025-12-23 21:14:03Z], ~U[2025-12-23 21:14:03Z], "Build a soft upholstered chair from scratch — frame, foam, fabric. A clean, simple DIY furniture project for any home.", "Custom Soft Chair DIY — Simple, Clean Result", "https://www.youtube.com/watch?v=qu5-pl6cuSY", "qu5-pl6cuSY", 909, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-12-06 Custom Soft Chair DIY — Simple, Clean Result/Custom Soft Chair DIY — Simple, Clean Result [qu5-pl6cuSY].mp4", false, 9, ~U[2025-12-06 17:01:24Z]] 21:14:03.642 [debug] QUERY OK source="sources" db=0.1ms idle=32.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:03.642 [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] 21:14:03.643 [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 [23939] 21:14:03.643 [debug] Current batch of media processed. Will check again in 1000ms 21:14:04.644 [debug] Current batch of media processed. Will check again in 1000ms 21:14:05.646 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Tired of the ugly gap between the ground and your gate? I was too — so I built my own simple but genius DIY mechanism to close it completely.\n\nIn this video, I show how I invented a clean, functional and surprisingly beautiful solution to the ground-to-gate gap using basic tools and smart engineering. This is not just DIY — it’s a real handmade invention.\n\nIf you love smart home ideas, simple mechanical hacks, satisfying builds and real - life inventions, this one is for you.\n\nWatch until the end to see how smoothly it works! #chester", "duration" => 602, "filename" => "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-11-22 Exclusive DIY Invention: Simple Mechanism That Closes the Ground - to - Gate Gap Perfectly/Exclusive DIY Invention: Simple Mechanism That Closes the Ground - to - Gate Gap Perfectly [TEUDIKJoxug].mp4", "id" => "TEUDIKJoxug", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=TEUDIKJoxug", "playlist_index" => 4, "timestamp" => 1763852438, "title" => "Exclusive DIY Invention: Simple Mechanism That Closes the Ground - to - Gate Gap Perfectly", "upload_date" => "20251122"} 21:14:05.647 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=642.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [9] 21:14:05.647 [debug] QUERY OK source="sources" db=0.2ms idle=642.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:05.648 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=643.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-22 23:00:38Z], 9] 21:14:05.650 [debug] QUERY OK source="media_items" db=0.8ms idle=644.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Tired of the ugly gap between the ground and your gate? I was too — so I built my own simple but genius DIY mechanism to close it completely.\n\nIn this video, I show how I invented a clean, functional and surprisingly beautiful solution to the ground-to-gate gap using basic tools and smart engineering. This is not just DIY — it’s a real handmade invention.\n\nIf you love smart home ideas, simple mechanical hacks, satisfying builds and real - life inventions, this one is for you.\n\nWatch until the end to see how smoothly it works! #chester", "Exclusive DIY Invention: Simple Mechanism That Closes the Ground - to - Gate Gap Perfectly", "19d8af13-4f29-4e85-bbdf-76b4c6904301", "https://www.youtube.com/watch?v=TEUDIKJoxug", "TEUDIKJoxug", false, 602, false, 4, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-11-22 Exclusive DIY Invention: Simple Mechanism That Closes the Ground - to - Gate Gap Perfectly/Exclusive DIY Invention: Simple Mechanism That Closes the Ground - to - Gate Gap Perfectly [TEUDIKJoxug].mp4", false, false, 9, [], 98, ~U[2025-11-22 23:00:38Z], ~U[2025-12-23 21:14:05Z], ~U[2025-12-23 21:14:05Z], "Tired of the ugly gap between the ground and your gate? I was too — so I built my own simple but genius DIY mechanism to close it completely.\n\nIn this video, I show how I invented a clean, functional and surprisingly beautiful solution to the ground-to-gate gap using basic tools and smart engineering. This is not just DIY — it’s a real handmade invention.\n\nIf you love smart home ideas, simple mechanical hacks, satisfying builds and real - life inventions, this one is for you.\n\nWatch until the end to see how smoothly it works! #chester", "Exclusive DIY Invention: Simple Mechanism That Closes the Ground - to - Gate Gap Perfectly", "https://www.youtube.com/watch?v=TEUDIKJoxug", "TEUDIKJoxug", 602, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-11-22 Exclusive DIY Invention: Simple Mechanism That Closes the Ground - to - Gate Gap Perfectly/Exclusive DIY Invention: Simple Mechanism That Closes the Ground - to - Gate Gap Perfectly [TEUDIKJoxug].mp4", false, 9, ~U[2025-11-22 23:00:38Z]] 21:14:05.650 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=36.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:05.651 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 21:14:05.651 [debug] QUERY OK source="media_items" db=0.2ms 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 [23941] 21:14:05.651 [debug] Current batch of media processed. Will check again in 1000ms 21:14:06.652 [debug] Current batch of media processed. Will check again in 1000ms 21:14:07.653 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#woodworking #weldingproject #woodandmetal #customfurniture #tablebuild #metalworking #diyfurniture #liveedge #steeltable #furnituredesign", "duration" => 1203, "filename" => "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-11-09 I Welded a Tree Slab into a Table: Wood Meets Metal in This Epic Build/I Welded a Tree Slab into a Table: Wood Meets Metal in This Epic Build [-uoAaQJJk-0].mp4", "id" => "-uoAaQJJk-0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=-uoAaQJJk-0", "playlist_index" => 5, "timestamp" => 1762729200, "title" => "I Welded a Tree Slab into a Table: Wood Meets Metal in This Epic Build", "upload_date" => "20251109"} 21:14:07.654 [debug] QUERY OK source="sources" db=0.1ms idle=649.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 (?)) [9] 21:14:07.654 [debug] QUERY OK source="sources" db=0.2ms idle=649.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:07.655 [debug] QUERY OK source="media_items" db=0.7ms idle=650.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-09 23:00:00Z], 9] 21:14:07.656 [debug] QUERY OK source="media_items" db=0.7ms idle=651.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#woodworking #weldingproject #woodandmetal #customfurniture #tablebuild #metalworking #diyfurniture #liveedge #steeltable #furnituredesign", "I Welded a Tree Slab into a Table: Wood Meets Metal in This Epic Build", "3b93040e-9cdb-44ae-8929-70cc74daa64f", "https://www.youtube.com/watch?v=-uoAaQJJk-0", "-uoAaQJJk-0", false, 1203, false, 5, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-11-09 I Welded a Tree Slab into a Table: Wood Meets Metal in This Epic Build/I Welded a Tree Slab into a Table: Wood Meets Metal in This Epic Build [-uoAaQJJk-0].mp4", false, false, 9, [], 98, ~U[2025-11-09 23:00:00Z], ~U[2025-12-23 21:14:07Z], ~U[2025-12-23 21:14:07Z], "#woodworking #weldingproject #woodandmetal #customfurniture #tablebuild #metalworking #diyfurniture #liveedge #steeltable #furnituredesign", "I Welded a Tree Slab into a Table: Wood Meets Metal in This Epic Build", "https://www.youtube.com/watch?v=-uoAaQJJk-0", "-uoAaQJJk-0", 1203, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-11-09 I Welded a Tree Slab into a Table: Wood Meets Metal in This Epic Build/I Welded a Tree Slab into a Table: Wood Meets Metal in This Epic Build [-uoAaQJJk-0].mp4", false, 9, ~U[2025-11-09 23:00:00Z]] 21:14:07.657 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=39.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:07.657 [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] 21:14:07.658 [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 [23943] 21:14:07.658 [debug] Current batch of media processed. Will check again in 1000ms 21:14:08.660 [debug] Current batch of media processed. Will check again in 1000ms 21:14:09.661 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "I took an old tree stump and transformed it into a stunning black art piece. Every step — from carving to deep charring — was done entirely by hand. The result? A minimalist, elegant, and timeless piece of wood art. #chester #woodworking #carving #relaxingprocess", "duration" => 714, "filename" => "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-11-05 From Raw Tree Stump to Black Art/From Raw Tree Stump to Black Art [vw8RCX0bvYo].mp4", "id" => "vw8RCX0bvYo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=vw8RCX0bvYo", "playlist_index" => 6, "timestamp" => 1762362100, "title" => "From Raw Tree Stump to Black Art", "upload_date" => "20251105"} 21:14:09.662 [debug] QUERY OK source="sources" db=0.3ms idle=657.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 (?)) [9] 21:14:09.663 [debug] QUERY OK source="sources" db=0.2ms idle=658.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:09.664 [debug] QUERY OK source="media_items" db=0.8ms idle=658.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-05 17:01:40Z], 9] 21:14:09.665 [debug] QUERY OK source="media_items" db=0.7ms idle=659.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["I took an old tree stump and transformed it into a stunning black art piece. Every step — from carving to deep charring — was done entirely by hand. The result? A minimalist, elegant, and timeless piece of wood art. #chester #woodworking #carving #relaxingprocess", "From Raw Tree Stump to Black Art", "0aa76d33-b688-4887-8d3e-9d604355bca7", "https://www.youtube.com/watch?v=vw8RCX0bvYo", "vw8RCX0bvYo", false, 714, false, 6, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-11-05 From Raw Tree Stump to Black Art/From Raw Tree Stump to Black Art [vw8RCX0bvYo].mp4", false, false, 9, [], 98, ~U[2025-11-05 17:01:40Z], ~U[2025-12-23 21:14:09Z], ~U[2025-12-23 21:14:09Z], "I took an old tree stump and transformed it into a stunning black art piece. Every step — from carving to deep charring — was done entirely by hand. The result? A minimalist, elegant, and timeless piece of wood art. #chester #woodworking #carving #relaxingprocess", "From Raw Tree Stump to Black Art", "https://www.youtube.com/watch?v=vw8RCX0bvYo", "vw8RCX0bvYo", 714, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-11-05 From Raw Tree Stump to Black Art/From Raw Tree Stump to Black Art [vw8RCX0bvYo].mp4", false, 9, ~U[2025-11-05 17:01:40Z]] 21:14:09.665 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=43.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:09.666 [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] 21:14:09.666 [debug] QUERY OK source="media_items" db=0.2ms 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 [23945] 21:14:09.666 [debug] Current batch of media processed. Will check again in 1000ms 21:14:10.667 [debug] Current batch of media processed. Will check again in 1000ms 21:14:11.668 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#chester", "duration" => 1084, "filename" => "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-29 How to Make a Curved - Back Sculptural Chair That Turns Heads/How to Make a Curved - Back Sculptural Chair That Turns Heads [_YCssWegz3k].mp4", "id" => "_YCssWegz3k", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=_YCssWegz3k", "playlist_index" => 7, "timestamp" => 1761757267, "title" => "How to Make a Curved - Back Sculptural Chair That Turns Heads", "upload_date" => "20251029"} 21:14:11.669 [debug] QUERY OK source="sources" db=0.3ms queue=0.2ms idle=664.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [9] 21:14:11.670 [debug] QUERY OK source="sources" db=0.2ms idle=665.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:11.671 [debug] QUERY OK source="media_items" db=0.7ms idle=665.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-29 17:01:07Z], 9] 21:14:11.672 [debug] QUERY OK source="media_items" db=0.6ms idle=666.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#chester", "How to Make a Curved - Back Sculptural Chair That Turns Heads", "f4f43422-85a4-4cba-b352-1014f8166a8e", "https://www.youtube.com/watch?v=_YCssWegz3k", "_YCssWegz3k", false, 1084, false, 7, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-29 How to Make a Curved - Back Sculptural Chair That Turns Heads/How to Make a Curved - Back Sculptural Chair That Turns Heads [_YCssWegz3k].mp4", false, false, 9, [], 98, ~U[2025-10-29 17:01:07Z], ~U[2025-12-23 21:14:11Z], ~U[2025-12-23 21:14:11Z], "#chester", "How to Make a Curved - Back Sculptural Chair That Turns Heads", "https://www.youtube.com/watch?v=_YCssWegz3k", "_YCssWegz3k", 1084, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-29 How to Make a Curved - Back Sculptural Chair That Turns Heads/How to Make a Curved - Back Sculptural Chair That Turns Heads [_YCssWegz3k].mp4", false, 9, ~U[2025-10-29 17:01:07Z]] 21:14:11.672 [debug] QUERY OK source="sources" db=0.4ms idle=45.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:11.673 [debug] QUERY OK source="media_profiles" db=0.3ms idle=3.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 21:14:11.674 [debug] QUERY OK source="media_items" db=0.4ms 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 [23947] 21:14:11.674 [debug] Current batch of media processed. Will check again in 1000ms 21:14:12.676 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#chester", "duration" => 1860, "filename" => "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-25 Watch how a frame is transformed from scratch into a curved, sculptural armchair/Watch how a frame is transformed from scratch into a curved, sculptural armchair [ki4gsMv-VA0].mp4", "id" => "ki4gsMv-VA0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=ki4gsMv-VA0", "playlist_index" => 8, "timestamp" => 1761411664, "title" => "Watch how a frame is transformed from scratch into a curved, sculptural armchair", "upload_date" => "20251025"} 21:14:12.677 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=1004.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 (?)) [9] 21:14:12.677 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=1004.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:12.678 [debug] QUERY OK source="media_items" db=0.7ms idle=1004.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-25 17:01:04Z], 9] 21:14:12.680 [debug] QUERY OK source="media_items" db=0.6ms idle=1005.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#chester", "Watch how a frame is transformed from scratch into a curved, sculptural armchair", "d5441e5f-8f29-442c-b293-0f40d6baa57b", "https://www.youtube.com/watch?v=ki4gsMv-VA0", "ki4gsMv-VA0", false, 1860, false, 8, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-25 Watch how a frame is transformed from scratch into a curved, sculptural armchair/Watch how a frame is transformed from scratch into a curved, sculptural armchair [ki4gsMv-VA0].mp4", false, false, 9, [], 98, ~U[2025-10-25 17:01:04Z], ~U[2025-12-23 21:14:12Z], ~U[2025-12-23 21:14:12Z], "#chester", "Watch how a frame is transformed from scratch into a curved, sculptural armchair", "https://www.youtube.com/watch?v=ki4gsMv-VA0", "ki4gsMv-VA0", 1860, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-25 Watch how a frame is transformed from scratch into a curved, sculptural armchair/Watch how a frame is transformed from scratch into a curved, sculptural armchair [ki4gsMv-VA0].mp4", false, 9, ~U[2025-10-25 17:01:04Z]] 21:14:12.680 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [9] 21:14:12.680 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 21:14:12.681 [debug] QUERY OK source="media_items" db=0.4ms 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 [23949] 21:14:12.681 [debug] Current batch of media processed. Will check again in 1000ms 21:14:13.682 [debug] Current batch of media processed. Will check again in 1000ms 21:14:14.683 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Subscribe to other social networks:\n\nMy life is a channel, where I chat more than I work - https://www.youtube.com/@CHESTERLIFE\n\nTelegram - channel: all the latest is there https://t.me/chestermake", "duration" => 733, "filename" => "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-16 I Made This From One Piece of Wood/I Made This From One Piece of Wood [asyC85o48rk].mp4", "id" => "asyC85o48rk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=asyC85o48rk", "playlist_index" => 9, "timestamp" => 1760634006, "title" => "I Made This From One Piece of Wood", "upload_date" => "20251016"} 21:14:14.684 [debug] QUERY OK source="sources" db=0.2ms idle=679.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [9] 21:14:14.685 [debug] QUERY OK source="sources" db=0.2ms idle=680.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:14.685 [debug] QUERY OK source="media_items" db=0.6ms idle=680.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-16 17:00:06Z], 9] 21:14:14.687 [debug] QUERY OK source="media_items" db=0.6ms idle=681.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Subscribe to other social networks:\n\nMy life is a channel, where I chat more than I work - https://www.youtube.com/@CHESTERLIFE\n\nTelegram - channel: all the latest is there https://t.me/chestermake", "I Made This From One Piece of Wood", "428c4931-0edc-4cc7-a7ca-15cc2fbb7c88", "https://www.youtube.com/watch?v=asyC85o48rk", "asyC85o48rk", false, 733, false, 9, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-16 I Made This From One Piece of Wood/I Made This From One Piece of Wood [asyC85o48rk].mp4", false, false, 9, [], 98, ~U[2025-10-16 17:00:06Z], ~U[2025-12-23 21:14:14Z], ~U[2025-12-23 21:14:14Z], "Subscribe to other social networks:\n\nMy life is a channel, where I chat more than I work - https://www.youtube.com/@CHESTERLIFE\n\nTelegram - channel: all the latest is there https://t.me/chestermake", "I Made This From One Piece of Wood", "https://www.youtube.com/watch?v=asyC85o48rk", "asyC85o48rk", 733, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-16 I Made This From One Piece of Wood/I Made This From One Piece of Wood [asyC85o48rk].mp4", false, 9, ~U[2025-10-16 17:00:06Z]] 21:14:14.687 [debug] QUERY OK source="sources" db=0.1ms idle=53.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:14.687 [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] 21:14:14.688 [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 [23952] 21:14:14.688 [debug] Current batch of media processed. Will check again in 1000ms 21:14:15.689 [debug] Current batch of media processed. Will check again in 1000ms 21:14:16.691 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "I wanted to do something special for my Shiba Inu — so I built her a custom mini sofa from scratch. \nWhat started as a random weekend project turned into one of my favorite DIY builds ever, every detail was made with love\n\nWatch until the end for her reaction — totally worth it! #chester", "duration" => 944, "filename" => "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-12 DIY Mini - Sofa for My Shiba Inu — Zero Carpentry Skills Needed/DIY Mini - Sofa for My Shiba Inu — Zero Carpentry Skills Needed [YVLC6d0RZH4].mp4", "id" => "YVLC6d0RZH4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=YVLC6d0RZH4", "playlist_index" => 10, "timestamp" => 1760288447, "title" => "DIY Mini - Sofa for My Shiba Inu — Zero Carpentry Skills Needed", "upload_date" => "20251012"} 21:14:16.691 [debug] QUERY OK source="sources" db=0.2ms idle=686.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [9] 21:14:16.692 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=687.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:16.693 [debug] QUERY OK source="media_items" db=0.7ms idle=687.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-12 17:00:47Z], 9] 21:14:16.694 [debug] QUERY OK source="media_items" db=0.7ms idle=689.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["I wanted to do something special for my Shiba Inu — so I built her a custom mini sofa from scratch. \nWhat started as a random weekend project turned into one of my favorite DIY builds ever, every detail was made with love\n\nWatch until the end for her reaction — totally worth it! #chester", "DIY Mini - Sofa for My Shiba Inu — Zero Carpentry Skills Needed", "8f8dc289-9985-49de-ab71-05a15af6fcfe", "https://www.youtube.com/watch?v=YVLC6d0RZH4", "YVLC6d0RZH4", false, 944, false, 10, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-12 DIY Mini - Sofa for My Shiba Inu — Zero Carpentry Skills Needed/DIY Mini - Sofa for My Shiba Inu — Zero Carpentry Skills Needed [YVLC6d0RZH4].mp4", false, false, 9, [], 98, ~U[2025-10-12 17:00:47Z], ~U[2025-12-23 21:14:16Z], ~U[2025-12-23 21:14:16Z], "I wanted to do something special for my Shiba Inu — so I built her a custom mini sofa from scratch. \nWhat started as a random weekend project turned into one of my favorite DIY builds ever, every detail was made with love\n\nWatch until the end for her reaction — totally worth it! #chester", "DIY Mini - Sofa for My Shiba Inu — Zero Carpentry Skills Needed", "https://www.youtube.com/watch?v=YVLC6d0RZH4", "YVLC6d0RZH4", 944, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-12 DIY Mini - Sofa for My Shiba Inu — Zero Carpentry Skills Needed/DIY Mini - Sofa for My Shiba Inu — Zero Carpentry Skills Needed [YVLC6d0RZH4].mp4", false, 9, ~U[2025-10-12 17:00:47Z]] 21:14:16.694 [debug] QUERY OK source="sources" db=0.1ms idle=57.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:16.695 [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] 21:14:16.695 [debug] QUERY OK source="media_items" db=0.2ms idle=3.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [23954] 21:14:16.695 [debug] Current batch of media processed. Will check again in 1000ms 21:14:17.696 [debug] Current batch of media processed. Will check again in 1000ms 21:14:18.697 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "I built a unique wooden lamp completely by hand — from simple wood plates into something that looks like a glowing boat. This DIY project combines woodworking, creativity, and a touch of design magic. In this video, I’ll show every step of how I shaped, sanded, and assembled this lamp — no CNC, no fancy tools, just pure craftsmanship. #chester", "duration" => 1243, "filename" => "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-08 From Wood Plates to a Glowing Boat Lamp (Satisfying)/From Wood Plates to a Glowing Boat Lamp (Satisfying) [a-8mQ0hHXLc].mp4", "id" => "a-8mQ0hHXLc", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=a-8mQ0hHXLc", "playlist_index" => 11, "timestamp" => 1759942800, "title" => "From Wood Plates to a Glowing Boat Lamp (Satisfying)", "upload_date" => "20251008"} 21:14:18.697 [debug] QUERY OK source="sources" db=0.2ms idle=693.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [9] 21:14:18.698 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=693.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:18.699 [debug] QUERY OK source="media_items" db=0.7ms idle=694.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-08 17:00:00Z], 9] 21:14:18.700 [debug] QUERY OK source="media_items" db=0.6ms idle=695.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["I built a unique wooden lamp completely by hand — from simple wood plates into something that looks like a glowing boat. This DIY project combines woodworking, creativity, and a touch of design magic. In this video, I’ll show every step of how I shaped, sanded, and assembled this lamp — no CNC, no fancy tools, just pure craftsmanship. #chester", "From Wood Plates to a Glowing Boat Lamp (Satisfying)", "b91d3cf0-43ac-4cae-9c75-8cda8dbdbee1", "https://www.youtube.com/watch?v=a-8mQ0hHXLc", "a-8mQ0hHXLc", false, 1243, false, 11, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-08 From Wood Plates to a Glowing Boat Lamp (Satisfying)/From Wood Plates to a Glowing Boat Lamp (Satisfying) [a-8mQ0hHXLc].mp4", false, false, 9, [], 98, ~U[2025-10-08 17:00:00Z], ~U[2025-12-23 21:14:18Z], ~U[2025-12-23 21:14:18Z], "I built a unique wooden lamp completely by hand — from simple wood plates into something that looks like a glowing boat. This DIY project combines woodworking, creativity, and a touch of design magic. In this video, I’ll show every step of how I shaped, sanded, and assembled this lamp — no CNC, no fancy tools, just pure craftsmanship. #chester", "From Wood Plates to a Glowing Boat Lamp (Satisfying)", "https://www.youtube.com/watch?v=a-8mQ0hHXLc", "a-8mQ0hHXLc", 1243, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-08 From Wood Plates to a Glowing Boat Lamp (Satisfying)/From Wood Plates to a Glowing Boat Lamp (Satisfying) [a-8mQ0hHXLc].mp4", false, 9, ~U[2025-10-08 17:00:00Z]] 21:14:18.701 [debug] QUERY OK source="sources" db=0.2ms idle=59.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:18.701 [debug] QUERY OK source="media_profiles" db=0.2ms queue=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] 21:14:18.702 [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 [23956] 21:14:18.702 [debug] Current batch of media processed. Will check again in 1000ms 21:14:18.926 [info] {"source":"oban","duration":1215,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:14:19.703 [debug] Current batch of media processed. Will check again in 1000ms 21:14:20.704 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Subscribe to other social networks:\n\nMy life is a channel, where I chat more than I work - @CHESTERLIFE \n\nTelegram - channel: all the latest is there https://t.me/chestermake", "duration" => 1128, "filename" => "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-05 How I Built the Coolest Barrel Ottoman You’ll Ever See/How I Built the Coolest Barrel Ottoman You’ll Ever See [XqWo26ahQWs].mp4", "id" => "XqWo26ahQWs", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=XqWo26ahQWs", "playlist_index" => 12, "timestamp" => 1759683645, "title" => "How I Built the Coolest Barrel Ottoman You’ll Ever See", "upload_date" => "20251005"} 21:14:20.704 [debug] QUERY OK source="sources" db=0.1ms idle=700.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [9] 21:14:20.705 [debug] QUERY OK source="sources" db=0.1ms idle=700.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:20.706 [debug] QUERY OK source="media_items" db=0.8ms idle=700.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-05 17:00:45Z], 9] 21:14:20.707 [debug] QUERY OK source="media_items" db=0.7ms idle=702.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Subscribe to other social networks:\n\nMy life is a channel, where I chat more than I work - @CHESTERLIFE \n\nTelegram - channel: all the latest is there https://t.me/chestermake", "How I Built the Coolest Barrel Ottoman You’ll Ever See", "c3387237-4443-4dc3-b33a-330ce73d618c", "https://www.youtube.com/watch?v=XqWo26ahQWs", "XqWo26ahQWs", false, 1128, false, 12, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-05 How I Built the Coolest Barrel Ottoman You’ll Ever See/How I Built the Coolest Barrel Ottoman You’ll Ever See [XqWo26ahQWs].mp4", false, false, 9, [], 98, ~U[2025-10-05 17:00:45Z], ~U[2025-12-23 21:14:20Z], ~U[2025-12-23 21:14:20Z], "Subscribe to other social networks:\n\nMy life is a channel, where I chat more than I work - @CHESTERLIFE \n\nTelegram - channel: all the latest is there https://t.me/chestermake", "How I Built the Coolest Barrel Ottoman You’ll Ever See", "https://www.youtube.com/watch?v=XqWo26ahQWs", "XqWo26ahQWs", 1128, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-05 How I Built the Coolest Barrel Ottoman You’ll Ever See/How I Built the Coolest Barrel Ottoman You’ll Ever See [XqWo26ahQWs].mp4", false, 9, ~U[2025-10-05 17:00:45Z]] 21:14:20.708 [debug] QUERY OK source="sources" db=0.2ms idle=61.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:20.708 [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] 21:14:20.708 [debug] QUERY OK source="media_items" db=0.2ms 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 [23959] 21:14:20.709 [debug] Current batch of media processed. Will check again in 1000ms 21:14:21.709 [debug] Current batch of media processed. Will check again in 1000ms 21:14:22.710 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "My life is a channel, where I chat more than I work - @CHESTERLIFE \n\nTelegram - channel: all the latest is there https://t.me/chestermake", "duration" => 775, "filename" => "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-01 Made a $500 Table from an Old Tree Stump — How I Did It/Made a $500 Table from an Old Tree Stump — How I Did It [kV5u3jzkyNw].mp4", "id" => "kV5u3jzkyNw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=kV5u3jzkyNw", "playlist_index" => 13, "timestamp" => 1759338073, "title" => "Made a $500 Table from an Old Tree Stump — How I Did It", "upload_date" => "20251001"} 21:14:22.711 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=706.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [9] 21:14:22.711 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=707.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:22.712 [debug] QUERY OK source="media_items" db=0.9ms idle=707.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-01 17:01:13Z], 9] 21:14:22.714 [debug] QUERY OK source="media_items" db=0.7ms idle=708.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["My life is a channel, where I chat more than I work - @CHESTERLIFE \n\nTelegram - channel: all the latest is there https://t.me/chestermake", "Made a $500 Table from an Old Tree Stump — How I Did It", "e0db3c3d-04d8-4ed4-aa29-3151b0efc4bd", "https://www.youtube.com/watch?v=kV5u3jzkyNw", "kV5u3jzkyNw", false, 775, false, 13, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-01 Made a $500 Table from an Old Tree Stump — How I Did It/Made a $500 Table from an Old Tree Stump — How I Did It [kV5u3jzkyNw].mp4", false, false, 9, [], 98, ~U[2025-10-01 17:01:13Z], ~U[2025-12-23 21:14:22Z], ~U[2025-12-23 21:14:22Z], "My life is a channel, where I chat more than I work - @CHESTERLIFE \n\nTelegram - channel: all the latest is there https://t.me/chestermake", "Made a $500 Table from an Old Tree Stump — How I Did It", "https://www.youtube.com/watch?v=kV5u3jzkyNw", "kV5u3jzkyNw", 775, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-01 Made a $500 Table from an Old Tree Stump — How I Did It/Made a $500 Table from an Old Tree Stump — How I Did It [kV5u3jzkyNw].mp4", false, 9, ~U[2025-10-01 17:01:13Z]] 21:14:22.714 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=63.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:22.715 [debug] QUERY OK source="media_profiles" db=0.3ms idle=3.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 21:14:22.715 [debug] QUERY OK source="media_items" db=0.2ms 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 [23961] 21:14:22.716 [debug] Current batch of media processed. Will check again in 1000ms 21:14:23.717 [debug] Current batch of media processed. Will check again in 1000ms 21:14:24.719 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "#chester #furniture", "duration" => 1326, "filename" => "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-28 Handmade Felt Sofa — Made by Hand, Looks Unreal/Handmade Felt Sofa — Made by Hand, Looks Unreal [1BBnSQBy8uo].mp4", "id" => "1BBnSQBy8uo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=1BBnSQBy8uo", "playlist_index" => 14, "timestamp" => 1759078803, "title" => "Handmade Felt Sofa — Made by Hand, Looks Unreal", "upload_date" => "20250928"} 21:14:24.719 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=714.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [9] 21:14:24.720 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=715.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:24.721 [debug] QUERY OK source="media_items" db=0.7ms idle=715.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-28 17:00:03Z], 9] 21:14:24.722 [debug] QUERY OK source="media_items" db=0.6ms idle=716.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#chester #furniture", "Handmade Felt Sofa — Made by Hand, Looks Unreal", "48a65b37-0ff8-42c0-92de-66f11232606c", "https://www.youtube.com/watch?v=1BBnSQBy8uo", "1BBnSQBy8uo", false, 1326, false, 14, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-28 Handmade Felt Sofa — Made by Hand, Looks Unreal/Handmade Felt Sofa — Made by Hand, Looks Unreal [1BBnSQBy8uo].mp4", false, false, 9, [], 98, ~U[2025-09-28 17:00:03Z], ~U[2025-12-23 21:14:24Z], ~U[2025-12-23 21:14:24Z], "#chester #furniture", "Handmade Felt Sofa — Made by Hand, Looks Unreal", "https://www.youtube.com/watch?v=1BBnSQBy8uo", "1BBnSQBy8uo", 1326, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-28 Handmade Felt Sofa — Made by Hand, Looks Unreal/Handmade Felt Sofa — Made by Hand, Looks Unreal [1BBnSQBy8uo].mp4", false, 9, ~U[2025-09-28 17:00:03Z]] 21:14:24.722 [debug] QUERY OK source="sources" db=0.3ms idle=67.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:24.723 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.1ms idle=3.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 21:14:24.724 [debug] QUERY OK source="media_items" db=0.2ms 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 [23963] 21:14:24.724 [debug] Current batch of media processed. Will check again in 1000ms 21:14:25.725 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "I wanted a bar stool that wasn’t just functional — it had to feel amazing, look unique, and be 100% handmade. So, I built one myself… and honestly, I didn’t expect it to turn out THIS good. 😅\n\nFrom cutting the wood to stitching the leather seat, this build pushed my skills but also gave me the most comfortable stool I’ve ever sat on.\n\nWatch till the end — you’ll see why I’m officially obsessed with this thing!\n\nMy Life - Channel @CHESTERLIFE \nMy Telegram channel https://t.me/chestermake\n\n#chester #woodworking #furniture", "duration" => 1266, "filename" => "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-24 I Built a Handmade Bar Stool — It Turned Out INSANELY Comfortable (I’m Obsessed)/I Built a Handmade Bar Stool — It Turned Out INSANELY Comfortable (I’m Obsessed) [02GkPRVaSoU].mp4", "id" => "02GkPRVaSoU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=02GkPRVaSoU", "playlist_index" => 15, "timestamp" => 1758733201, "title" => "I Built a Handmade Bar Stool — It Turned Out INSANELY Comfortable (I’m Obsessed)", "upload_date" => "20250924"} 21:14:25.726 [debug] QUERY OK source="sources" db=0.2ms queue=0.2ms idle=1004.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [9] 21:14:25.727 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [9] 21:14:25.728 [debug] QUERY OK source="media_items" db=0.6ms idle=1003.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-24 17:00:01Z], 9] 21:14:25.836 [debug] QUERY OK source="media_items" db=107.7ms idle=1004.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["I wanted a bar stool that wasn’t just functional — it had to feel amazing, look unique, and be 100% handmade. So, I built one myself… and honestly, I didn’t expect it to turn out THIS good. 😅\n\nFrom cutting the wood to stitching the leather seat, this build pushed my skills but also gave me the most comfortable stool I’ve ever sat on.\n\nWatch till the end — you’ll see why I’m officially obsessed with this thing!\n\nMy Life - Channel @CHESTERLIFE \nMy Telegram channel https://t.me/chestermake\n\n#chester #woodworking #furniture", "I Built a Handmade Bar Stool — It Turned Out INSANELY Comfortable (I’m Obsessed)", "92c54ff5-e75c-4fb8-8231-19721753ae34", "https://www.youtube.com/watch?v=02GkPRVaSoU", "02GkPRVaSoU", false, 1266, false, 15, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-24 I Built a Handmade Bar Stool — It Turned Out INSANELY Comfortable (I’m Obsessed)/I Built a Handmade Bar Stool — It Turned Out INSANELY Comfortable (I’m Obsessed) [02GkPRVaSoU].mp4", false, false, 9, [], 98, ~U[2025-09-24 17:00:01Z], ~U[2025-12-23 21:14:25Z], ~U[2025-12-23 21:14:25Z], "I wanted a bar stool that wasn’t just functional — it had to feel amazing, look unique, and be 100% handmade. So, I built one myself… and honestly, I didn’t expect it to turn out THIS good. 😅\n\nFrom cutting the wood to stitching the leather seat, this build pushed my skills but also gave me the most comfortable stool I’ve ever sat on.\n\nWatch till the end — you’ll see why I’m officially obsessed with this thing!\n\nMy Life - Channel @CHESTERLIFE \nMy Telegram channel https://t.me/chestermake\n\n#chester #woodworking #furniture", "I Built a Handmade Bar Stool — It Turned Out INSANELY Comfortable (I’m Obsessed)", "https://www.youtube.com/watch?v=02GkPRVaSoU", "02GkPRVaSoU", 1266, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-24 I Built a Handmade Bar Stool — It Turned Out INSANELY Comfortable (I’m Obsessed)/I Built a Handmade Bar Stool — It Turned Out INSANELY Comfortable (I’m Obsessed) [02GkPRVaSoU].mp4", false, 9, ~U[2025-09-24 17:00:01Z]] 21:14:25.837 [debug] QUERY OK source="sources" db=0.2ms idle=180.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" = ?) [9] 21:14:25.837 [debug] QUERY OK source="media_profiles" db=0.2ms idle=110.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] 21:14:25.838 [debug] QUERY OK source="media_items" db=0.2ms idle=110.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 [23965] 21:14:25.838 [debug] Current batch of media processed. Will check again in 1000ms 21:14:26.839 [debug] Current batch of media processed. Will check again in 1000ms 21:14:27.840 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "In this video, I’ll take you step by step through the process — from raw log to a polished, live-edge masterpiece. Every cut, every sanding stroke, and every finishing touch brings out the natural beauty and history of the wood.\n\nIf you love woodworking, DIY furniture, and creative builds, this project will inspire you to look at raw materials differently. A century of growth is now preserved in a table that will last for generations. #chester", "duration" => 840, "filename" => "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-21 Watch Me Build a Table from a 100 Year Old Tree Slice/Watch Me Build a Table from a 100 Year Old Tree Slice [Tey1irn3lE8].mp4", "id" => "Tey1irn3lE8", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Tey1irn3lE8", "playlist_index" => 16, "timestamp" => 1758474047, "title" => "Watch Me Build a Table from a 100 Year Old Tree Slice", "upload_date" => "20250921"} 21:14:27.841 [debug] QUERY OK source="sources" db=0.3ms queue=0.3ms idle=836.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [9] 21:14:27.842 [debug] QUERY OK source="sources" db=0.1ms idle=837.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:27.843 [debug] QUERY OK source="media_items" db=0.6ms 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[2025-09-21 17:00:47Z], 9] 21:14:27.873 [debug] QUERY OK source="media_items" db=29.8ms idle=839.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["In this video, I’ll take you step by step through the process — from raw log to a polished, live-edge masterpiece. Every cut, every sanding stroke, and every finishing touch brings out the natural beauty and history of the wood.\n\nIf you love woodworking, DIY furniture, and creative builds, this project will inspire you to look at raw materials differently. A century of growth is now preserved in a table that will last for generations. #chester", "Watch Me Build a Table from a 100 Year Old Tree Slice", "9cb130dd-6b35-4046-9b11-b9128785afb7", "https://www.youtube.com/watch?v=Tey1irn3lE8", "Tey1irn3lE8", false, 840, false, 16, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-21 Watch Me Build a Table from a 100 Year Old Tree Slice/Watch Me Build a Table from a 100 Year Old Tree Slice [Tey1irn3lE8].mp4", false, false, 9, [], 98, ~U[2025-09-21 17:00:47Z], ~U[2025-12-23 21:14:27Z], ~U[2025-12-23 21:14:27Z], "In this video, I’ll take you step by step through the process — from raw log to a polished, live-edge masterpiece. Every cut, every sanding stroke, and every finishing touch brings out the natural beauty and history of the wood.\n\nIf you love woodworking, DIY furniture, and creative builds, this project will inspire you to look at raw materials differently. A century of growth is now preserved in a table that will last for generations. #chester", "Watch Me Build a Table from a 100 Year Old Tree Slice", "https://www.youtube.com/watch?v=Tey1irn3lE8", "Tey1irn3lE8", 840, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-21 Watch Me Build a Table from a 100 Year Old Tree Slice/Watch Me Build a Table from a 100 Year Old Tree Slice [Tey1irn3lE8].mp4", false, 9, ~U[2025-09-21 17:00:47Z]] 21:14:27.874 [debug] QUERY OK source="sources" db=0.2ms idle=213.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:27.874 [debug] QUERY OK source="media_profiles" db=0.2ms idle=32.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] 21:14:27.875 [debug] QUERY OK source="media_items" db=0.1ms idle=32.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 [23967] 21:14:27.875 [debug] Current batch of media processed. Will check again in 1000ms 21:14:28.877 [debug] Current batch of media processed. Will check again in 1000ms 21:14:29.879 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Build your own entryway ottoman/bench from scratch! In this step-by-step DIY tutorial, I’ll show you exactly how to create stylish hallway furniture that anyone can make at home. No advanced tools or special skills required — just simple materials, clear instructions, and plenty of helpful tips along the way.", "duration" => 1274, "filename" => "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-17 Build Your Own Hallway Bench | Detailed DIY Furniture Guide/Build Your Own Hallway Bench | Detailed DIY Furniture Guide [DBbs8Q6r9Wk].mp4", "id" => "DBbs8Q6r9Wk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=DBbs8Q6r9Wk", "playlist_index" => 17, "timestamp" => 1758128426, "title" => "Build Your Own Hallway Bench | Detailed DIY Furniture Guide", "upload_date" => "20250917"} 21:14:29.880 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=875.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 (?)) [9] 21:14:29.880 [debug] QUERY OK source="sources" db=0.1ms idle=875.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:29.881 [debug] QUERY OK source="media_items" db=0.6ms idle=876.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-17 17:00:26Z], 9] 21:14:29.883 [debug] QUERY OK source="media_items" db=1.3ms idle=877.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Build your own entryway ottoman/bench from scratch! In this step-by-step DIY tutorial, I’ll show you exactly how to create stylish hallway furniture that anyone can make at home. No advanced tools or special skills required — just simple materials, clear instructions, and plenty of helpful tips along the way.", "Build Your Own Hallway Bench | Detailed DIY Furniture Guide", "8ba6348a-4b5e-4cb2-8c25-7d89d020fdcb", "https://www.youtube.com/watch?v=DBbs8Q6r9Wk", "DBbs8Q6r9Wk", false, 1274, false, 17, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-17 Build Your Own Hallway Bench | Detailed DIY Furniture Guide/Build Your Own Hallway Bench | Detailed DIY Furniture Guide [DBbs8Q6r9Wk].mp4", false, false, 9, [], 98, ~U[2025-09-17 17:00:26Z], ~U[2025-12-23 21:14:29Z], ~U[2025-12-23 21:14:29Z], "Build your own entryway ottoman/bench from scratch! In this step-by-step DIY tutorial, I’ll show you exactly how to create stylish hallway furniture that anyone can make at home. No advanced tools or special skills required — just simple materials, clear instructions, and plenty of helpful tips along the way.", "Build Your Own Hallway Bench | Detailed DIY Furniture Guide", "https://www.youtube.com/watch?v=DBbs8Q6r9Wk", "DBbs8Q6r9Wk", 1274, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-17 Build Your Own Hallway Bench | Detailed DIY Furniture Guide/Build Your Own Hallway Bench | Detailed DIY Furniture Guide [DBbs8Q6r9Wk].mp4", false, 9, ~U[2025-09-17 17:00:26Z]] 21:14:29.884 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=217.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" = ?) [9] 21:14:29.884 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=3.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 21:14:29.885 [debug] QUERY OK source="media_items" db=0.3ms idle=4.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 [23969] 21:14:29.885 [debug] Current batch of media processed. Will check again in 1000ms 21:14:30.886 [debug] Current batch of media processed. Will check again in 1000ms 21:14:31.887 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Hand-restoring an antique rocking chair from start to finish! In this video, I take an old, broken rocker and bring it back to life completely by hand — just patience, skill, and traditional restoration techniques.\n\nYou’ll see the full process:\n\n- Removing old paint and repairing damaged wood\n\n- Hand sanding every detail to reveal the natural grain\n\n- Reinforcing joints for lasting stability\n\n- Applying natural finishes for a beautiful, smooth result\n\nIf you love DIY furniture restoration, woodworking projects, or satisfying before & after transformations, this video is for you. Watch how a forgotten chair turns into a stunning centerpiece that’s ready for another generation of use.\n\nSubscribe to other social networks:\n\nMy life is a channel, where I chat more than I work - @CHESTERLIFE \n\nTelegram - channel: all the latest is there https://t.me/chestermake", "duration" => 980, "filename" => "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-14 Antique Rocking Chair RESTORED by Hand — Satisfying Before & After/Antique Rocking Chair RESTORED by Hand — Satisfying Before & After [Fx7s209pyZg].mp4", "id" => "Fx7s209pyZg", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Fx7s209pyZg", "playlist_index" => 18, "timestamp" => 1757869216, "title" => "Antique Rocking Chair RESTORED by Hand — Satisfying Before & After", "upload_date" => "20250914"} 21:14:31.888 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=883.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 (?)) [9] 21:14:31.888 [debug] QUERY OK source="sources" db=0.2ms idle=883.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:31.889 [debug] QUERY OK source="media_items" db=0.7ms idle=884.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-14 17:00:16Z], 9] 21:14:31.891 [debug] QUERY OK source="media_items" db=0.9ms idle=885.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Hand-restoring an antique rocking chair from start to finish! In this video, I take an old, broken rocker and bring it back to life completely by hand — just patience, skill, and traditional restoration techniques.\n\nYou’ll see the full process:\n\n- Removing old paint and repairing damaged wood\n\n- Hand sanding every detail to reveal the natural grain\n\n- Reinforcing joints for lasting stability\n\n- Applying natural finishes for a beautiful, smooth result\n\nIf you love DIY furniture restoration, woodworking projects, or satisfying before & after transformations, this video is for you. Watch how a forgotten chair turns into a stunning centerpiece that’s ready for another generation of use.\n\nSubscribe to other social networks:\n\nMy life is a channel, where I chat more than I work - @CHESTERLIFE \n\nTelegram - channel: all the latest is there https://t.me/chestermake", "Antique Rocking Chair RESTORED by Hand — Satisfying Before & After", "17924156-992b-4951-b9cf-933bcf5eaa8d", "https://www.youtube.com/watch?v=Fx7s209pyZg", "Fx7s209pyZg", false, 980, false, 18, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-14 Antique Rocking Chair RESTORED by Hand — Satisfying Before & After/Antique Rocking Chair RESTORED by Hand — Satisfying Before & After [Fx7s209pyZg].mp4", false, false, 9, [], 98, ~U[2025-09-14 17:00:16Z], ~U[2025-12-23 21:14:31Z], ~U[2025-12-23 21:14:31Z], "Hand-restoring an antique rocking chair from start to finish! In this video, I take an old, broken rocker and bring it back to life completely by hand — just patience, skill, and traditional restoration techniques.\n\nYou’ll see the full process:\n\n- Removing old paint and repairing damaged wood\n\n- Hand sanding every detail to reveal the natural grain\n\n- Reinforcing joints for lasting stability\n\n- Applying natural finishes for a beautiful, smooth result\n\nIf you love DIY furniture restoration, woodworking projects, or satisfying before & after transformations, this video is for you. Watch how a forgotten chair turns into a stunning centerpiece that’s ready for another generation of use.\n\nSubscribe to other social networks:\n\nMy life is a channel, where I chat more than I work - @CHESTERLIFE \n\nTelegram - channel: all the latest is there https://t.me/chestermake", "Antique Rocking Chair RESTORED by Hand — Satisfying Before & After", "https://www.youtube.com/watch?v=Fx7s209pyZg", "Fx7s209pyZg", 980, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-14 Antique Rocking Chair RESTORED by Hand — Satisfying Before & After/Antique Rocking Chair RESTORED by Hand — Satisfying Before & After [Fx7s209pyZg].mp4", false, 9, ~U[2025-09-14 17:00:16Z]] 21:14:31.891 [debug] QUERY OK source="sources" db=0.2ms idle=222.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:31.891 [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] 21:14:31.892 [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 [23971] 21:14:31.892 [debug] Current batch of media processed. Will check again in 1000ms 21:14:32.893 [debug] Current batch of media processed. Will check again in 1000ms 21:14:33.894 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Discover a Japanese-style woodworking idea that transforms ordinary projects into extraordinary pieces. In this video, I’ll show you how to apply unique hand-carved textures and finishing techniques that highlight the natural beauty of wood.\n\nWhether you’re passionate about carpentry, woodworking, or DIY projects, this idea combines traditional Japanese aesthetics with modern tools — perfect for anyone who loves experimenting with creative designs.\n\nWatch until the end to see how a simple surface can turn into a stunning, premium-looking detail that elevates your entire project.\n\nSubscribe to other social networks:\n\nMy life is a channel, where I chat more than I work - @CHESTERLIFE \n\nTelegram - channel: all the latest is there https://t.me/chestermake", "duration" => 1122, "filename" => "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-06 Genius Japanese - Style Woodworking Idea — Hand - Carved Texture That Looks Insanely (Carpentry DIY)/Genius Japanese - Style Woodworking Idea — Hand - Carved Texture That Looks Insanely (Carpentry DIY) [bwW1Kwbq6k8].mp4", "id" => "bwW1Kwbq6k8", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=bwW1Kwbq6k8", "playlist_index" => 19, "timestamp" => 1757178050, "title" => "Genius Japanese - Style Woodworking Idea — Hand - Carved Texture That Looks Insanely (Carpentry DIY)", "upload_date" => "20250906"} 21:14:33.895 [debug] QUERY OK source="sources" db=0.3ms idle=890.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 (?)) [9] 21:14:33.895 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [9] 21:14:33.896 [debug] QUERY OK source="media_items" db=0.7ms idle=891.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-06 17:00:50Z], 9] 21:14:33.897 [debug] QUERY OK source="media_items" db=0.8ms idle=892.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Discover a Japanese-style woodworking idea that transforms ordinary projects into extraordinary pieces. In this video, I’ll show you how to apply unique hand-carved textures and finishing techniques that highlight the natural beauty of wood.\n\nWhether you’re passionate about carpentry, woodworking, or DIY projects, this idea combines traditional Japanese aesthetics with modern tools — perfect for anyone who loves experimenting with creative designs.\n\nWatch until the end to see how a simple surface can turn into a stunning, premium-looking detail that elevates your entire project.\n\nSubscribe to other social networks:\n\nMy life is a channel, where I chat more than I work - @CHESTERLIFE \n\nTelegram - channel: all the latest is there https://t.me/chestermake", "Genius Japanese - Style Woodworking Idea — Hand - Carved Texture That Looks Insanely (Carpentry DIY)", "b3538ad3-84d4-4735-8159-9152172ef1e9", "https://www.youtube.com/watch?v=bwW1Kwbq6k8", "bwW1Kwbq6k8", false, 1122, false, 19, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-06 Genius Japanese - Style Woodworking Idea — Hand - Carved Texture That Looks Insanely (Carpentry DIY)/Genius Japanese - Style Woodworking Idea — Hand - Carved Texture That Looks Insanely (Carpentry DIY) [bwW1Kwbq6k8].mp4", false, false, 9, [], 98, ~U[2025-09-06 17:00:50Z], ~U[2025-12-23 21:14:33Z], ~U[2025-12-23 21:14:33Z], "Discover a Japanese-style woodworking idea that transforms ordinary projects into extraordinary pieces. In this video, I’ll show you how to apply unique hand-carved textures and finishing techniques that highlight the natural beauty of wood.\n\nWhether you’re passionate about carpentry, woodworking, or DIY projects, this idea combines traditional Japanese aesthetics with modern tools — perfect for anyone who loves experimenting with creative designs.\n\nWatch until the end to see how a simple surface can turn into a stunning, premium-looking detail that elevates your entire project.\n\nSubscribe to other social networks:\n\nMy life is a channel, where I chat more than I work - @CHESTERLIFE \n\nTelegram - channel: all the latest is there https://t.me/chestermake", "Genius Japanese - Style Woodworking Idea — Hand - Carved Texture That Looks Insanely (Carpentry DIY)", "https://www.youtube.com/watch?v=bwW1Kwbq6k8", "bwW1Kwbq6k8", 1122, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-06 Genius Japanese - Style Woodworking Idea — Hand - Carved Texture That Looks Insanely (Carpentry DIY)/Genius Japanese - Style Woodworking Idea — Hand - Carved Texture That Looks Insanely (Carpentry DIY) [bwW1Kwbq6k8].mp4", false, 9, ~U[2025-09-06 17:00:50Z]] 21:14:33.898 [debug] QUERY OK source="sources" db=0.1ms idle=224.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:33.898 [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] 21:14:33.899 [debug] QUERY OK source="media_items" db=0.2ms 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 [23973] 21:14:33.899 [info] Kicking off download for media item #23973 (bwW1Kwbq6k8) 21:14:33.900 [debug] Current batch of media processed. Will check again in 1000ms 21:14:34.901 [debug] Current batch of media processed. Will check again in 1000ms 21:14:35.671 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@chesterkrsk --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/65/be/65bec0a5998291d5a14749326a587b3dc212289ff1763e9b1473a068b22d6905.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/4d/52/4d52965abf80f87c8321997e62fa9434ca14c7faedb4c24092871422dd91304c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 101 with: 21:14:35.671 [debug] Gracefully stopping file follower 21:14:35.672 [debug] QUERY OK source="sources" db=0.3ms idle=996.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 (?)) [9] 21:14:35.672 [debug] QUERY OK source="sources" db=0.1ms idle=668.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:35.673 [debug] QUERY OK source="media_items" db=0.6ms idle=668.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-12 17:00:32Z], 9] 21:14:35.674 [debug] QUERY OK source="media_items" db=0.5ms idle=669.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#chester", "How to Make Chesterfield", "84a2318b-3b7c-45b3-adcd-0bf590e1ce8c", "https://www.youtube.com/watch?v=DolZdm3LYCI", "DolZdm3LYCI", false, 1210, false, 1, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-12-12 How to Make Chesterfield/How to Make Chesterfield [DolZdm3LYCI].mp4", false, false, 9, [], 98, ~U[2025-12-12 17:00:32Z], ~U[2025-12-23 21:14:35Z], ~U[2025-12-23 21:14:35Z], "#chester", "How to Make Chesterfield", "https://www.youtube.com/watch?v=DolZdm3LYCI", "DolZdm3LYCI", 1210, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-12-12 How to Make Chesterfield/How to Make Chesterfield [DolZdm3LYCI].mp4", false, 9, ~U[2025-12-12 17:00:32Z]] 21:14:35.674 [debug] QUERY OK source="sources" db=0.1ms idle=670.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:35.675 [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[2025-12-10 17:00:37Z], 9] 21:14:35.676 [debug] QUERY OK source="media_items" db=0.5ms idle=3.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#chester", "Handcrafted Chesterfield Sofa Build", "365ee4d8-136b-4937-ac61-05b1f725e566", "https://www.youtube.com/watch?v=ISTG4DgSWbA", "ISTG4DgSWbA", false, 855, false, 2, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-12-10 Handcrafted Chesterfield Sofa Build/Handcrafted Chesterfield Sofa Build [ISTG4DgSWbA].mp4", false, false, 9, [], 98, ~U[2025-12-10 17:00:37Z], ~U[2025-12-23 21:14:35Z], ~U[2025-12-23 21:14:35Z], "#chester", "Handcrafted Chesterfield Sofa Build", "https://www.youtube.com/watch?v=ISTG4DgSWbA", "ISTG4DgSWbA", 855, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-12-10 Handcrafted Chesterfield Sofa Build/Handcrafted Chesterfield Sofa Build [ISTG4DgSWbA].mp4", false, 9, ~U[2025-12-10 17:00:37Z]] 21:14:35.677 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [9] 21:14:35.678 [debug] QUERY OK source="media_items" db=0.6ms idle=2.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-06 17:01:24Z], 9] 21:14:35.679 [debug] QUERY OK source="media_items" db=0.6ms idle=2.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Build a soft upholstered chair from scratch — frame, foam, fabric. A clean, simple DIY furniture project for any home.", "Custom Soft Chair DIY — Simple, Clean Result", "df969a57-e480-4344-a1a5-a05d1888bce5", "https://www.youtube.com/watch?v=qu5-pl6cuSY", "qu5-pl6cuSY", false, 909, false, 3, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-12-06 Custom Soft Chair DIY — Simple, Clean Result/Custom Soft Chair DIY — Simple, Clean Result [qu5-pl6cuSY].mp4", false, false, 9, [], 98, ~U[2025-12-06 17:01:24Z], ~U[2025-12-23 21:14:35Z], ~U[2025-12-23 21:14:35Z], "Build a soft upholstered chair from scratch — frame, foam, fabric. A clean, simple DIY furniture project for any home.", "Custom Soft Chair DIY — Simple, Clean Result", "https://www.youtube.com/watch?v=qu5-pl6cuSY", "qu5-pl6cuSY", 909, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-12-06 Custom Soft Chair DIY — Simple, Clean Result/Custom Soft Chair DIY — Simple, Clean Result [qu5-pl6cuSY].mp4", false, 9, ~U[2025-12-06 17:01:24Z]] 21:14:35.679 [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" = ?) [9] 21:14:35.680 [debug] QUERY OK source="media_items" db=0.4ms idle=2.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-22 23:00:38Z], 9] 21:14:35.681 [debug] QUERY OK source="media_items" db=0.7ms idle=2.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Tired of the ugly gap between the ground and your gate? I was too — so I built my own simple but genius DIY mechanism to close it completely.\n\nIn this video, I show how I invented a clean, functional and surprisingly beautiful solution to the ground-to-gate gap using basic tools and smart engineering. This is not just DIY — it’s a real handmade invention.\n\nIf you love smart home ideas, simple mechanical hacks, satisfying builds and real - life inventions, this one is for you.\n\nWatch until the end to see how smoothly it works! #chester", "Exclusive DIY Invention: Simple Mechanism That Closes the Ground - to - Gate Gap Perfectly", "96f8b74e-f9fe-421f-8f29-289080778056", "https://www.youtube.com/watch?v=TEUDIKJoxug", "TEUDIKJoxug", false, 602, false, 4, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-11-22 Exclusive DIY Invention: Simple Mechanism That Closes the Ground - to - Gate Gap Perfectly/Exclusive DIY Invention: Simple Mechanism That Closes the Ground - to - Gate Gap Perfectly [TEUDIKJoxug].mp4", false, false, 9, [], 98, ~U[2025-11-22 23:00:38Z], ~U[2025-12-23 21:14:35Z], ~U[2025-12-23 21:14:35Z], "Tired of the ugly gap between the ground and your gate? I was too — so I built my own simple but genius DIY mechanism to close it completely.\n\nIn this video, I show how I invented a clean, functional and surprisingly beautiful solution to the ground-to-gate gap using basic tools and smart engineering. This is not just DIY — it’s a real handmade invention.\n\nIf you love smart home ideas, simple mechanical hacks, satisfying builds and real - life inventions, this one is for you.\n\nWatch until the end to see how smoothly it works! #chester", "Exclusive DIY Invention: Simple Mechanism That Closes the Ground - to - Gate Gap Perfectly", "https://www.youtube.com/watch?v=TEUDIKJoxug", "TEUDIKJoxug", 602, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-11-22 Exclusive DIY Invention: Simple Mechanism That Closes the Ground - to - Gate Gap Perfectly/Exclusive DIY Invention: Simple Mechanism That Closes the Ground - to - Gate Gap Perfectly [TEUDIKJoxug].mp4", false, 9, ~U[2025-11-22 23:00:38Z]] 21:14:35.681 [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" = ?) [9] 21:14:35.682 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-11-09 23:00:00Z], 9] 21:14:35.683 [debug] QUERY OK source="media_items" db=0.5ms idle=3.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#woodworking #weldingproject #woodandmetal #customfurniture #tablebuild #metalworking #diyfurniture #liveedge #steeltable #furnituredesign", "I Welded a Tree Slab into a Table: Wood Meets Metal in This Epic Build", "71ed7960-beeb-4ac5-b394-0218b19d7201", "https://www.youtube.com/watch?v=-uoAaQJJk-0", "-uoAaQJJk-0", false, 1203, false, 5, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-11-09 I Welded a Tree Slab into a Table: Wood Meets Metal in This Epic Build/I Welded a Tree Slab into a Table: Wood Meets Metal in This Epic Build [-uoAaQJJk-0].mp4", false, false, 9, [], 98, ~U[2025-11-09 23:00:00Z], ~U[2025-12-23 21:14:35Z], ~U[2025-12-23 21:14:35Z], "#woodworking #weldingproject #woodandmetal #customfurniture #tablebuild #metalworking #diyfurniture #liveedge #steeltable #furnituredesign", "I Welded a Tree Slab into a Table: Wood Meets Metal in This Epic Build", "https://www.youtube.com/watch?v=-uoAaQJJk-0", "-uoAaQJJk-0", 1203, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-11-09 I Welded a Tree Slab into a Table: Wood Meets Metal in This Epic Build/I Welded a Tree Slab into a Table: Wood Meets Metal in This Epic Build [-uoAaQJJk-0].mp4", false, 9, ~U[2025-11-09 23:00:00Z]] 21:14:35.683 [debug] QUERY OK source="sources" db=0.2ms idle=3.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:35.684 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-11-05 17:01:40Z], 9] 21:14:35.685 [debug] QUERY OK source="media_items" db=0.5ms idle=2.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["I took an old tree stump and transformed it into a stunning black art piece. Every step — from carving to deep charring — was done entirely by hand. The result? A minimalist, elegant, and timeless piece of wood art. #chester #woodworking #carving #relaxingprocess", "From Raw Tree Stump to Black Art", "16ffccab-72ec-4397-8510-b0efbe554668", "https://www.youtube.com/watch?v=vw8RCX0bvYo", "vw8RCX0bvYo", false, 714, false, 6, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-11-05 From Raw Tree Stump to Black Art/From Raw Tree Stump to Black Art [vw8RCX0bvYo].mp4", false, false, 9, [], 98, ~U[2025-11-05 17:01:40Z], ~U[2025-12-23 21:14:35Z], ~U[2025-12-23 21:14:35Z], "I took an old tree stump and transformed it into a stunning black art piece. Every step — from carving to deep charring — was done entirely by hand. The result? A minimalist, elegant, and timeless piece of wood art. #chester #woodworking #carving #relaxingprocess", "From Raw Tree Stump to Black Art", "https://www.youtube.com/watch?v=vw8RCX0bvYo", "vw8RCX0bvYo", 714, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-11-05 From Raw Tree Stump to Black Art/From Raw Tree Stump to Black Art [vw8RCX0bvYo].mp4", false, 9, ~U[2025-11-05 17:01:40Z]] 21:14:35.685 [debug] QUERY OK source="sources" db=0.2ms idle=3.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:35.686 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-10-29 17:01:07Z], 9] 21:14:35.687 [debug] QUERY OK source="media_items" db=0.4ms idle=3.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#chester", "How to Make a Curved - Back Sculptural Chair That Turns Heads", "944f715b-54ea-41dd-be88-44a9c8262060", "https://www.youtube.com/watch?v=_YCssWegz3k", "_YCssWegz3k", false, 1084, false, 7, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-29 How to Make a Curved - Back Sculptural Chair That Turns Heads/How to Make a Curved - Back Sculptural Chair That Turns Heads [_YCssWegz3k].mp4", false, false, 9, [], 98, ~U[2025-10-29 17:01:07Z], ~U[2025-12-23 21:14:35Z], ~U[2025-12-23 21:14:35Z], "#chester", "How to Make a Curved - Back Sculptural Chair That Turns Heads", "https://www.youtube.com/watch?v=_YCssWegz3k", "_YCssWegz3k", 1084, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-29 How to Make a Curved - Back Sculptural Chair That Turns Heads/How to Make a Curved - Back Sculptural Chair That Turns Heads [_YCssWegz3k].mp4", false, 9, ~U[2025-10-29 17:01:07Z]] 21:14:35.687 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=3.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:35.688 [debug] QUERY OK source="media_items" db=0.4ms idle=2.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-25 17:01:04Z], 9] 21:14:35.689 [debug] QUERY OK source="media_items" db=0.4ms idle=2.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#chester", "Watch how a frame is transformed from scratch into a curved, sculptural armchair", "3e71be30-61d1-402f-99c5-95bb87f786fe", "https://www.youtube.com/watch?v=ki4gsMv-VA0", "ki4gsMv-VA0", false, 1860, false, 8, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-25 Watch how a frame is transformed from scratch into a curved, sculptural armchair/Watch how a frame is transformed from scratch into a curved, sculptural armchair [ki4gsMv-VA0].mp4", false, false, 9, [], 98, ~U[2025-10-25 17:01:04Z], ~U[2025-12-23 21:14:35Z], ~U[2025-12-23 21:14:35Z], "#chester", "Watch how a frame is transformed from scratch into a curved, sculptural armchair", "https://www.youtube.com/watch?v=ki4gsMv-VA0", "ki4gsMv-VA0", 1860, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-25 Watch how a frame is transformed from scratch into a curved, sculptural armchair/Watch how a frame is transformed from scratch into a curved, sculptural armchair [ki4gsMv-VA0].mp4", false, 9, ~U[2025-10-25 17:01:04Z]] 21:14:35.689 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [9] 21:14:35.690 [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[2025-10-16 17:00:06Z], 9] 21:14:35.691 [debug] QUERY OK source="media_items" db=0.5ms idle=2.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Subscribe to other social networks:\n\nMy life is a channel, where I chat more than I work - https://www.youtube.com/@CHESTERLIFE\n\nTelegram - channel: all the latest is there https://t.me/chestermake", "I Made This From One Piece of Wood", "3fcb7585-aade-40a0-9b00-6b3afa8f0ccc", "https://www.youtube.com/watch?v=asyC85o48rk", "asyC85o48rk", false, 733, false, 9, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-16 I Made This From One Piece of Wood/I Made This From One Piece of Wood [asyC85o48rk].mp4", false, false, 9, [], 98, ~U[2025-10-16 17:00:06Z], ~U[2025-12-23 21:14:35Z], ~U[2025-12-23 21:14:35Z], "Subscribe to other social networks:\n\nMy life is a channel, where I chat more than I work - https://www.youtube.com/@CHESTERLIFE\n\nTelegram - channel: all the latest is there https://t.me/chestermake", "I Made This From One Piece of Wood", "https://www.youtube.com/watch?v=asyC85o48rk", "asyC85o48rk", 733, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-16 I Made This From One Piece of Wood/I Made This From One Piece of Wood [asyC85o48rk].mp4", false, 9, ~U[2025-10-16 17:00:06Z]] 21:14:35.691 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=3.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:35.692 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-10-12 17:00:47Z], 9] 21:14:35.693 [debug] QUERY OK source="media_items" db=0.5ms idle=2.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["I wanted to do something special for my Shiba Inu — so I built her a custom mini sofa from scratch. \nWhat started as a random weekend project turned into one of my favorite DIY builds ever, every detail was made with love\n\nWatch until the end for her reaction — totally worth it! #chester", "DIY Mini - Sofa for My Shiba Inu — Zero Carpentry Skills Needed", "8c6d66da-f467-45af-a881-d10cf7b1fa5c", "https://www.youtube.com/watch?v=YVLC6d0RZH4", "YVLC6d0RZH4", false, 944, false, 10, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-12 DIY Mini - Sofa for My Shiba Inu — Zero Carpentry Skills Needed/DIY Mini - Sofa for My Shiba Inu — Zero Carpentry Skills Needed [YVLC6d0RZH4].mp4", false, false, 9, [], 98, ~U[2025-10-12 17:00:47Z], ~U[2025-12-23 21:14:35Z], ~U[2025-12-23 21:14:35Z], "I wanted to do something special for my Shiba Inu — so I built her a custom mini sofa from scratch. \nWhat started as a random weekend project turned into one of my favorite DIY builds ever, every detail was made with love\n\nWatch until the end for her reaction — totally worth it! #chester", "DIY Mini - Sofa for My Shiba Inu — Zero Carpentry Skills Needed", "https://www.youtube.com/watch?v=YVLC6d0RZH4", "YVLC6d0RZH4", 944, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-12 DIY Mini - Sofa for My Shiba Inu — Zero Carpentry Skills Needed/DIY Mini - Sofa for My Shiba Inu — Zero Carpentry Skills Needed [YVLC6d0RZH4].mp4", false, 9, ~U[2025-10-12 17:00:47Z]] 21:14:35.693 [debug] QUERY OK source="sources" db=0.2ms queue=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" = ?) [9] 21:14:35.694 [debug] QUERY OK source="media_items" db=0.4ms idle=2.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-08 17:00:00Z], 9] 21:14:35.695 [debug] QUERY OK source="media_items" db=0.6ms idle=2.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["I built a unique wooden lamp completely by hand — from simple wood plates into something that looks like a glowing boat. This DIY project combines woodworking, creativity, and a touch of design magic. In this video, I’ll show every step of how I shaped, sanded, and assembled this lamp — no CNC, no fancy tools, just pure craftsmanship. #chester", "From Wood Plates to a Glowing Boat Lamp (Satisfying)", "bd8d2f90-96c8-4cf9-b90e-b4bfe56e466c", "https://www.youtube.com/watch?v=a-8mQ0hHXLc", "a-8mQ0hHXLc", false, 1243, false, 11, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-08 From Wood Plates to a Glowing Boat Lamp (Satisfying)/From Wood Plates to a Glowing Boat Lamp (Satisfying) [a-8mQ0hHXLc].mp4", false, false, 9, [], 98, ~U[2025-10-08 17:00:00Z], ~U[2025-12-23 21:14:35Z], ~U[2025-12-23 21:14:35Z], "I built a unique wooden lamp completely by hand — from simple wood plates into something that looks like a glowing boat. This DIY project combines woodworking, creativity, and a touch of design magic. In this video, I’ll show every step of how I shaped, sanded, and assembled this lamp — no CNC, no fancy tools, just pure craftsmanship. #chester", "From Wood Plates to a Glowing Boat Lamp (Satisfying)", "https://www.youtube.com/watch?v=a-8mQ0hHXLc", "a-8mQ0hHXLc", 1243, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-08 From Wood Plates to a Glowing Boat Lamp (Satisfying)/From Wood Plates to a Glowing Boat Lamp (Satisfying) [a-8mQ0hHXLc].mp4", false, 9, ~U[2025-10-08 17:00:00Z]] 21:14:35.695 [debug] QUERY OK source="sources" db=0.2ms idle=3.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:35.696 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-10-05 17:00:45Z], 9] 21:14:35.697 [debug] QUERY OK source="media_items" db=0.5ms idle=2.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Subscribe to other social networks:\n\nMy life is a channel, where I chat more than I work - @CHESTERLIFE \n\nTelegram - channel: all the latest is there https://t.me/chestermake", "How I Built the Coolest Barrel Ottoman You’ll Ever See", "0a61ecdb-ba21-41ca-8ab5-0f4ed9891193", "https://www.youtube.com/watch?v=XqWo26ahQWs", "XqWo26ahQWs", false, 1128, false, 12, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-05 How I Built the Coolest Barrel Ottoman You’ll Ever See/How I Built the Coolest Barrel Ottoman You’ll Ever See [XqWo26ahQWs].mp4", false, false, 9, [], 98, ~U[2025-10-05 17:00:45Z], ~U[2025-12-23 21:14:35Z], ~U[2025-12-23 21:14:35Z], "Subscribe to other social networks:\n\nMy life is a channel, where I chat more than I work - @CHESTERLIFE \n\nTelegram - channel: all the latest is there https://t.me/chestermake", "How I Built the Coolest Barrel Ottoman You’ll Ever See", "https://www.youtube.com/watch?v=XqWo26ahQWs", "XqWo26ahQWs", 1128, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-05 How I Built the Coolest Barrel Ottoman You’ll Ever See/How I Built the Coolest Barrel Ottoman You’ll Ever See [XqWo26ahQWs].mp4", false, 9, ~U[2025-10-05 17:00:45Z]] 21:14:35.697 [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" = ?) [9] 21:14:35.698 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-10-01 17:01:13Z], 9] 21:14:35.699 [debug] QUERY OK source="media_items" db=0.4ms idle=3.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["My life is a channel, where I chat more than I work - @CHESTERLIFE \n\nTelegram - channel: all the latest is there https://t.me/chestermake", "Made a $500 Table from an Old Tree Stump — How I Did It", "439b4f71-89e0-4698-931f-377deb779887", "https://www.youtube.com/watch?v=kV5u3jzkyNw", "kV5u3jzkyNw", false, 775, false, 13, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-01 Made a $500 Table from an Old Tree Stump — How I Did It/Made a $500 Table from an Old Tree Stump — How I Did It [kV5u3jzkyNw].mp4", false, false, 9, [], 98, ~U[2025-10-01 17:01:13Z], ~U[2025-12-23 21:14:35Z], ~U[2025-12-23 21:14:35Z], "My life is a channel, where I chat more than I work - @CHESTERLIFE \n\nTelegram - channel: all the latest is there https://t.me/chestermake", "Made a $500 Table from an Old Tree Stump — How I Did It", "https://www.youtube.com/watch?v=kV5u3jzkyNw", "kV5u3jzkyNw", 775, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-10-01 Made a $500 Table from an Old Tree Stump — How I Did It/Made a $500 Table from an Old Tree Stump — How I Did It [kV5u3jzkyNw].mp4", false, 9, ~U[2025-10-01 17:01:13Z]] 21:14:35.699 [debug] QUERY OK source="sources" db=0.2ms idle=3.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:35.700 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-09-28 17:00:03Z], 9] 21:14:35.702 [debug] QUERY OK source="media_items" db=1.2ms idle=2.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["#chester #furniture", "Handmade Felt Sofa — Made by Hand, Looks Unreal", "d338e558-f15d-4055-a62f-d37cbf4b87a5", "https://www.youtube.com/watch?v=1BBnSQBy8uo", "1BBnSQBy8uo", false, 1326, false, 14, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-28 Handmade Felt Sofa — Made by Hand, Looks Unreal/Handmade Felt Sofa — Made by Hand, Looks Unreal [1BBnSQBy8uo].mp4", false, false, 9, [], 98, ~U[2025-09-28 17:00:03Z], ~U[2025-12-23 21:14:35Z], ~U[2025-12-23 21:14:35Z], "#chester #furniture", "Handmade Felt Sofa — Made by Hand, Looks Unreal", "https://www.youtube.com/watch?v=1BBnSQBy8uo", "1BBnSQBy8uo", 1326, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-28 Handmade Felt Sofa — Made by Hand, Looks Unreal/Handmade Felt Sofa — Made by Hand, Looks Unreal [1BBnSQBy8uo].mp4", false, 9, ~U[2025-09-28 17:00:03Z]] 21:14:35.702 [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" = ?) [9] 21:14:35.703 [debug] QUERY OK source="media_items" db=0.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[2025-09-24 17:00:01Z], 9] 21:14:35.704 [debug] QUERY OK source="media_items" db=0.7ms idle=3.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["I wanted a bar stool that wasn’t just functional — it had to feel amazing, look unique, and be 100% handmade. So, I built one myself… and honestly, I didn’t expect it to turn out THIS good. 😅\n\nFrom cutting the wood to stitching the leather seat, this build pushed my skills but also gave me the most comfortable stool I’ve ever sat on.\n\nWatch till the end — you’ll see why I’m officially obsessed with this thing!\n\nMy Life - Channel @CHESTERLIFE \nMy Telegram channel https://t.me/chestermake\n\n#chester #woodworking #furniture", "I Built a Handmade Bar Stool — It Turned Out INSANELY Comfortable (I’m Obsessed)", "6523428f-6986-47da-8c8f-db91cf953afa", "https://www.youtube.com/watch?v=02GkPRVaSoU", "02GkPRVaSoU", false, 1266, false, 15, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-24 I Built a Handmade Bar Stool — It Turned Out INSANELY Comfortable (I’m Obsessed)/I Built a Handmade Bar Stool — It Turned Out INSANELY Comfortable (I’m Obsessed) [02GkPRVaSoU].mp4", false, false, 9, [], 98, ~U[2025-09-24 17:00:01Z], ~U[2025-12-23 21:14:35Z], ~U[2025-12-23 21:14:35Z], "I wanted a bar stool that wasn’t just functional — it had to feel amazing, look unique, and be 100% handmade. So, I built one myself… and honestly, I didn’t expect it to turn out THIS good. 😅\n\nFrom cutting the wood to stitching the leather seat, this build pushed my skills but also gave me the most comfortable stool I’ve ever sat on.\n\nWatch till the end — you’ll see why I’m officially obsessed with this thing!\n\nMy Life - Channel @CHESTERLIFE \nMy Telegram channel https://t.me/chestermake\n\n#chester #woodworking #furniture", "I Built a Handmade Bar Stool — It Turned Out INSANELY Comfortable (I’m Obsessed)", "https://www.youtube.com/watch?v=02GkPRVaSoU", "02GkPRVaSoU", 1266, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-24 I Built a Handmade Bar Stool — It Turned Out INSANELY Comfortable (I’m Obsessed)/I Built a Handmade Bar Stool — It Turned Out INSANELY Comfortable (I’m Obsessed) [02GkPRVaSoU].mp4", false, 9, ~U[2025-09-24 17:00:01Z]] 21:14:35.704 [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" = ?) [9] 21:14:35.705 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-09-21 17:00:47Z], 9] 21:14:35.706 [debug] QUERY OK source="media_items" db=0.6ms idle=3.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["In this video, I’ll take you step by step through the process — from raw log to a polished, live-edge masterpiece. Every cut, every sanding stroke, and every finishing touch brings out the natural beauty and history of the wood.\n\nIf you love woodworking, DIY furniture, and creative builds, this project will inspire you to look at raw materials differently. A century of growth is now preserved in a table that will last for generations. #chester", "Watch Me Build a Table from a 100 Year Old Tree Slice", "32fa9f8c-9cb6-4e5f-a720-f6a6179fb08e", "https://www.youtube.com/watch?v=Tey1irn3lE8", "Tey1irn3lE8", false, 840, false, 16, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-21 Watch Me Build a Table from a 100 Year Old Tree Slice/Watch Me Build a Table from a 100 Year Old Tree Slice [Tey1irn3lE8].mp4", false, false, 9, [], 98, ~U[2025-09-21 17:00:47Z], ~U[2025-12-23 21:14:35Z], ~U[2025-12-23 21:14:35Z], "In this video, I’ll take you step by step through the process — from raw log to a polished, live-edge masterpiece. Every cut, every sanding stroke, and every finishing touch brings out the natural beauty and history of the wood.\n\nIf you love woodworking, DIY furniture, and creative builds, this project will inspire you to look at raw materials differently. A century of growth is now preserved in a table that will last for generations. #chester", "Watch Me Build a Table from a 100 Year Old Tree Slice", "https://www.youtube.com/watch?v=Tey1irn3lE8", "Tey1irn3lE8", 840, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-21 Watch Me Build a Table from a 100 Year Old Tree Slice/Watch Me Build a Table from a 100 Year Old Tree Slice [Tey1irn3lE8].mp4", false, 9, ~U[2025-09-21 17:00:47Z]] 21:14:35.706 [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" = ?) [9] 21:14:35.707 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-09-17 17:00:26Z], 9] 21:14:35.708 [debug] QUERY OK source="media_items" db=0.6ms idle=3.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Build your own entryway ottoman/bench from scratch! In this step-by-step DIY tutorial, I’ll show you exactly how to create stylish hallway furniture that anyone can make at home. No advanced tools or special skills required — just simple materials, clear instructions, and plenty of helpful tips along the way.", "Build Your Own Hallway Bench | Detailed DIY Furniture Guide", "3361bf56-4cdd-4282-9cf1-7e0bcbc711c3", "https://www.youtube.com/watch?v=DBbs8Q6r9Wk", "DBbs8Q6r9Wk", false, 1274, false, 17, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-17 Build Your Own Hallway Bench | Detailed DIY Furniture Guide/Build Your Own Hallway Bench | Detailed DIY Furniture Guide [DBbs8Q6r9Wk].mp4", false, false, 9, [], 98, ~U[2025-09-17 17:00:26Z], ~U[2025-12-23 21:14:35Z], ~U[2025-12-23 21:14:35Z], "Build your own entryway ottoman/bench from scratch! In this step-by-step DIY tutorial, I’ll show you exactly how to create stylish hallway furniture that anyone can make at home. No advanced tools or special skills required — just simple materials, clear instructions, and plenty of helpful tips along the way.", "Build Your Own Hallway Bench | Detailed DIY Furniture Guide", "https://www.youtube.com/watch?v=DBbs8Q6r9Wk", "DBbs8Q6r9Wk", 1274, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-17 Build Your Own Hallway Bench | Detailed DIY Furniture Guide/Build Your Own Hallway Bench | Detailed DIY Furniture Guide [DBbs8Q6r9Wk].mp4", false, 9, ~U[2025-09-17 17:00:26Z]] 21:14:35.709 [debug] QUERY OK source="sources" db=0.2ms idle=3.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 21:14:35.709 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-09-14 17:00:16Z], 9] 21:14:35.710 [debug] QUERY OK source="media_items" db=0.7ms idle=2.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Hand-restoring an antique rocking chair from start to finish! In this video, I take an old, broken rocker and bring it back to life completely by hand — just patience, skill, and traditional restoration techniques.\n\nYou’ll see the full process:\n\n- Removing old paint and repairing damaged wood\n\n- Hand sanding every detail to reveal the natural grain\n\n- Reinforcing joints for lasting stability\n\n- Applying natural finishes for a beautiful, smooth result\n\nIf you love DIY furniture restoration, woodworking projects, or satisfying before & after transformations, this video is for you. Watch how a forgotten chair turns into a stunning centerpiece that’s ready for another generation of use.\n\nSubscribe to other social networks:\n\nMy life is a channel, where I chat more than I work - @CHESTERLIFE \n\nTelegram - channel: all the latest is there https://t.me/chestermake", "Antique Rocking Chair RESTORED by Hand — Satisfying Before & After", "ca97a9d3-e827-41d7-88bc-8b7524a05bb6", "https://www.youtube.com/watch?v=Fx7s209pyZg", "Fx7s209pyZg", false, 980, false, 18, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-14 Antique Rocking Chair RESTORED by Hand — Satisfying Before & After/Antique Rocking Chair RESTORED by Hand — Satisfying Before & After [Fx7s209pyZg].mp4", false, false, 9, [], 98, ~U[2025-09-14 17:00:16Z], ~U[2025-12-23 21:14:35Z], ~U[2025-12-23 21:14:35Z], "Hand-restoring an antique rocking chair from start to finish! In this video, I take an old, broken rocker and bring it back to life completely by hand — just patience, skill, and traditional restoration techniques.\n\nYou’ll see the full process:\n\n- Removing old paint and repairing damaged wood\n\n- Hand sanding every detail to reveal the natural grain\n\n- Reinforcing joints for lasting stability\n\n- Applying natural finishes for a beautiful, smooth result\n\nIf you love DIY furniture restoration, woodworking projects, or satisfying before & after transformations, this video is for you. Watch how a forgotten chair turns into a stunning centerpiece that’s ready for another generation of use.\n\nSubscribe to other social networks:\n\nMy life is a channel, where I chat more than I work - @CHESTERLIFE \n\nTelegram - channel: all the latest is there https://t.me/chestermake", "Antique Rocking Chair RESTORED by Hand — Satisfying Before & After", "https://www.youtube.com/watch?v=Fx7s209pyZg", "Fx7s209pyZg", 980, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-14 Antique Rocking Chair RESTORED by Hand — Satisfying Before & After/Antique Rocking Chair RESTORED by Hand — Satisfying Before & After [Fx7s209pyZg].mp4", false, 9, ~U[2025-09-14 17:00:16Z]] 21:14:35.711 [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" = ?) [9] 21:14:35.711 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-09-06 17:00:50Z], 9] 21:14:35.713 [debug] QUERY OK source="media_items" db=0.7ms idle=3.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Discover a Japanese-style woodworking idea that transforms ordinary projects into extraordinary pieces. In this video, I’ll show you how to apply unique hand-carved textures and finishing techniques that highlight the natural beauty of wood.\n\nWhether you’re passionate about carpentry, woodworking, or DIY projects, this idea combines traditional Japanese aesthetics with modern tools — perfect for anyone who loves experimenting with creative designs.\n\nWatch until the end to see how a simple surface can turn into a stunning, premium-looking detail that elevates your entire project.\n\nSubscribe to other social networks:\n\nMy life is a channel, where I chat more than I work - @CHESTERLIFE \n\nTelegram - channel: all the latest is there https://t.me/chestermake", "Genius Japanese - Style Woodworking Idea — Hand - Carved Texture That Looks Insanely (Carpentry DIY)", "b976adaa-b38f-4256-816d-839411db904a", "https://www.youtube.com/watch?v=bwW1Kwbq6k8", "bwW1Kwbq6k8", false, 1122, false, 19, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-06 Genius Japanese - Style Woodworking Idea — Hand - Carved Texture That Looks Insanely (Carpentry DIY)/Genius Japanese - Style Woodworking Idea — Hand - Carved Texture That Looks Insanely (Carpentry DIY) [bwW1Kwbq6k8].mp4", false, false, 9, [], 98, ~U[2025-09-06 17:00:50Z], ~U[2025-12-23 21:14:35Z], ~U[2025-12-23 21:14:35Z], "Discover a Japanese-style woodworking idea that transforms ordinary projects into extraordinary pieces. In this video, I’ll show you how to apply unique hand-carved textures and finishing techniques that highlight the natural beauty of wood.\n\nWhether you’re passionate about carpentry, woodworking, or DIY projects, this idea combines traditional Japanese aesthetics with modern tools — perfect for anyone who loves experimenting with creative designs.\n\nWatch until the end to see how a simple surface can turn into a stunning, premium-looking detail that elevates your entire project.\n\nSubscribe to other social networks:\n\nMy life is a channel, where I chat more than I work - @CHESTERLIFE \n\nTelegram - channel: all the latest is there https://t.me/chestermake", "Genius Japanese - Style Woodworking Idea — Hand - Carved Texture That Looks Insanely (Carpentry DIY)", "https://www.youtube.com/watch?v=bwW1Kwbq6k8", "bwW1Kwbq6k8", 1122, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-09-06 Genius Japanese - Style Woodworking Idea — Hand - Carved Texture That Looks Insanely (Carpentry DIY)/Genius Japanese - Style Woodworking Idea — Hand - Carved Texture That Looks Insanely (Carpentry DIY) [bwW1Kwbq6k8].mp4", false, 9, ~U[2025-09-06 17:00:50Z]] 21:14:35.713 [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" = ?) [9] 21:14:35.714 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-08-30 17:00:51Z], 9] 21:14:35.715 [debug] QUERY OK source="media_items" db=0.7ms idle=3.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Discover an unusual way to create a unique wooden DIY idea with your own hands! In this video, I’ll show you step by step how to work with wood in a creative and unexpected method. Perfect for woodworking enthusiasts, beginners, or anyone looking for fresh inspiration for their next DIY project.\n\nWhether you want to decorate your home, build something practical, or just enjoy the process of working with wood, this unusual woodworking technique will surprise you with its simplicity and effectiveness.\n\nSubscribe to other social networks:\n\nMy life is a channel, where I chat more than I work - \u2068@CHESTERLIFE \n\nTelegram - channel: all the latest is there https://t.me/chestermake", "Creative DIY Wood Idea with an Unusual Approach", "10a59430-5105-4978-85e1-8cca30e32f58", "https://www.youtube.com/watch?v=g9m1nY1mxcE", "g9m1nY1mxcE", false, 817, false, 20, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-08-30 Creative DIY Wood Idea with an Unusual Approach/Creative DIY Wood Idea with an Unusual Approach [g9m1nY1mxcE].mp4", false, false, 9, [], 98, ~U[2025-08-30 17:00:51Z], ~U[2025-12-23 21:14:35Z], ~U[2025-12-23 21:14:35Z], "Discover an unusual way to create a unique wooden DIY idea with your own hands! In this video, I’ll show you step by step how to work with wood in a creative and unexpected method. Perfect for woodworking enthusiasts, beginners, or anyone looking for fresh inspiration for their next DIY project.\n\nWhether you want to decorate your home, build something practical, or just enjoy the process of working with wood, this unusual woodworking technique will surprise you with its simplicity and effectiveness.\n\nSubscribe to other social networks:\n\nMy life is a channel, where I chat more than I work - \u2068@CHESTERLIFE \n\nTelegram - channel: all the latest is there https://t.me/chestermake", "Creative DIY Wood Idea with an Unusual Approach", "https://www.youtube.com/watch?v=g9m1nY1mxcE", "g9m1nY1mxcE", 817, false, "/downloads/CHEST'ER(해외 가구DIY 채널)/2025-08-30 Creative DIY Wood Idea with an Unusual Approach/Creative DIY Wood Idea with an Unusual Approach [g9m1nY1mxcE].mp4", false, 9, ~U[2025-08-30 17:00:51Z]] 21:14:35.715 [debug] QUERY OK source="sources" db=0.2ms idle=3.6ms UPDATE "sources" SET "last_indexed_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2025-12-23 21:14:35Z], ~U[2025-12-23 21:14:35Z], 9] 21:14:35.716 [debug] QUERY OK source="media_items" db=0.7ms 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")))) [9] 21:14:35.722 [debug] QUERY OK source="media_items" db=0.5ms idle=2.4ms 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")))) [9] 21:14:35.723 [debug] QUERY OK source="media_items" db=0.1ms idle=2.4ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [9] 21:14:35.724 [debug] QUERY OK source="tasks" db=0.2ms idle=1.9ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [7409, 9, ~U[2025-12-23 21:14:35Z], ~U[2025-12-23 21:14:35Z]] 21:14:35.724 [info] {"args":{"id":9},"id":7393,"meta":{},"state":"success","max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","duration":40124594,"event":"job:stop","queue_time":317321,"attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 21:14:48.928 [info] {"source":"oban","duration":1191,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:15:00.738 [info] {"source":"oban","duration":351,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:15:18.931 [info] {"source":"oban","duration":1425,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:15:48.934 [info] {"source":"oban","duration":1885,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:15:50.839 [info] {"args":{"id":10},"id":7394,"meta":{},"system_time":1766524550839139618,"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"]} 21:15:50.839 [debug] QUERY OK source="sources" db=0.2ms idle=834.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:15:50.840 [debug] QUERY OK source="settings" db=0.1ms idle=835.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:15:50.840 [debug] QUERY OK source="media_items" db=0.6ms idle=835.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")))) [10] 21:15:50.841 [debug] QUERY OK source="media_items" db=0.1ms idle=8.6ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [10] 21:15:50.841 [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] 21:15:50.841 [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 [] 21:15:50.842 [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 [] 21:15:50.843 [debug] QUERY OK source="media_items" db=0.9ms idle=1.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."source_id" = ?) ORDER BY m0."uploaded_at" DESC LIMIT 50 OFFSET 20 [10] 21:15:50.845 [debug] Running yt-dlp command for action: get_media_attributes_for_collection 21:15:50.845 [debug] Current batch of media processed. Will check again in 1000ms 21:15:50.845 [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 [] 21:15:50.845 [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 [] 21:15:50.845 [debug] QUERY OK source="settings" db=0.1ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:15:50.846 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@blenderguru/videos --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/Blender Guru/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/58/3a/583a9a5af4d4dc2522ecb5237cbfa30897d18ea68571859f32d386020be72aec.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/a1/f6/a1f6d26c475afbf3d9bb7e5e7b90f1dd770d90404abf95245e7669ecd793d0e1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 21:15:51.846 [debug] Current batch of media processed. Will check again in 1000ms 21:15:52.847 [debug] Current batch of media processed. Will check again in 1000ms 21:15:53.848 [debug] Current batch of media processed. Will check again in 1000ms 21:15:54.849 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Join the Blender Guru Beginners Academy: https://academy.blenderguru.com/join\n\nLet's light and render that donut 🍩\n\nIn this video you'll learn how to add lights for realism, and render in Eevee and Cycles.\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "duration" => 1976, "filename" => "/downloads/Blender Guru/2025-12-07 The Basics of Lighting and Rendering in Blender (Donut Finale)/The Basics of Lighting and Rendering in Blender (Donut Finale) [WobATxh3i-g].mkv", "id" => "WobATxh3i-g", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=WobATxh3i-g", "playlist_index" => 1, "timestamp" => 1765141238, "title" => "The Basics of Lighting and Rendering in Blender (Donut Finale)", "upload_date" => "20251207"} 21:15:54.850 [debug] QUERY OK source="sources" db=0.2ms queue=0.2ms idle=844.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 (?)) [10] 21:15:54.850 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=845.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:15:54.851 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=845.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-07 21:00:38Z], 10] 21:15:54.852 [debug] QUERY OK source="media_items" db=0.6ms idle=846.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Join the Blender Guru Beginners Academy: https://academy.blenderguru.com/join\n\nLet's light and render that donut 🍩\n\nIn this video you'll learn how to add lights for realism, and render in Eevee and Cycles.\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "The Basics of Lighting and Rendering in Blender (Donut Finale)", "1aacf48d-32c5-40c3-9cc8-3c8bd3fde75a", "https://www.youtube.com/watch?v=WobATxh3i-g", "WobATxh3i-g", false, 1976, false, 1, "/downloads/Blender Guru/2025-12-07 The Basics of Lighting and Rendering in Blender (Donut Finale)/The Basics of Lighting and Rendering in Blender (Donut Finale) [WobATxh3i-g].mkv", false, false, 10, [], 98, ~U[2025-12-07 21:00:38Z], ~U[2025-12-23 21:15:54Z], ~U[2025-12-23 21:15:54Z], "Join the Blender Guru Beginners Academy: https://academy.blenderguru.com/join\n\nLet's light and render that donut 🍩\n\nIn this video you'll learn how to add lights for realism, and render in Eevee and Cycles.\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "The Basics of Lighting and Rendering in Blender (Donut Finale)", "https://www.youtube.com/watch?v=WobATxh3i-g", "WobATxh3i-g", 1976, false, "/downloads/Blender Guru/2025-12-07 The Basics of Lighting and Rendering in Blender (Donut Finale)/The Basics of Lighting and Rendering in Blender (Donut Finale) [WobATxh3i-g].mkv", false, 10, ~U[2025-12-07 21:00:38Z]] 21:15:54.853 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms 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" = ?) [10] 21:15:54.854 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=3.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 21:15:54.854 [debug] QUERY OK source="media_items" db=0.5ms 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 [24127] 21:15:54.855 [debug] Current batch of media processed. Will check again in 1000ms 21:15:55.855 [debug] Current batch of media processed. Will check again in 1000ms 21:15:56.856 [debug] Current batch of media processed. Will check again in 1000ms 21:15:57.857 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Let's add some sprinkles to that 🍩\nFinal part releasing in two days later\n\nIn this video you'll learn how to use the new scatter on surfaces modifier in Blender 5.0\n\n===Links🔗===\nBlender Guru: https://www.blenderguru.com/tutorials/blender-donut-v5-tutorial\nPoliigon: http://www.poliigon.com High-quality Models, Textures, HDRIs\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:18 Understanding the 3D cursor\n0:51 Modelling the sprinkles\n5:21 Modelling sprinkle variants\n7:23 The new Scatter on Surface Modifier\n12:44 Controlling where it scatters\n18:19 Fixing intersections\n24:04 Randomized colors\n35:16 Wrap up \n\n===Follow me🫰===\n\nTwitter: https://X.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "duration" => 2204, "filename" => "/downloads/Blender Guru/2025-12-05 How to Scatter in Blender 5.0 (Donut Part 7)/How to Scatter in Blender 5.0 (Donut Part 7) [_-QsGTL7pS0].mkv", "id" => "_-QsGTL7pS0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=_-QsGTL7pS0", "playlist_index" => 2, "timestamp" => 1764965704, "title" => "How to Scatter in Blender 5.0 (Donut Part 7)", "upload_date" => "20251205"} 21:15:57.858 [debug] QUERY OK source="sources" db=0.2ms idle=1852.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 (?)) [10] 21:15:57.858 [debug] QUERY OK source="sources" db=0.2ms idle=1853.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:15:57.860 [debug] QUERY OK source="media_items" db=0.9ms idle=1853.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-05 20:15:04Z], 10] 21:15:57.861 [debug] QUERY OK source="media_items" db=0.8ms idle=1016.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Let's add some sprinkles to that 🍩\nFinal part releasing in two days later\n\nIn this video you'll learn how to use the new scatter on surfaces modifier in Blender 5.0\n\n===Links🔗===\nBlender Guru: https://www.blenderguru.com/tutorials/blender-donut-v5-tutorial\nPoliigon: http://www.poliigon.com High-quality Models, Textures, HDRIs\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:18 Understanding the 3D cursor\n0:51 Modelling the sprinkles\n5:21 Modelling sprinkle variants\n7:23 The new Scatter on Surface Modifier\n12:44 Controlling where it scatters\n18:19 Fixing intersections\n24:04 Randomized colors\n35:16 Wrap up \n\n===Follow me🫰===\n\nTwitter: https://X.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "How to Scatter in Blender 5.0 (Donut Part 7)", "a5b7f236-dd40-4ec4-a3c9-c695a3cbb8b5", "https://www.youtube.com/watch?v=_-QsGTL7pS0", "_-QsGTL7pS0", false, 2204, false, 2, "/downloads/Blender Guru/2025-12-05 How to Scatter in Blender 5.0 (Donut Part 7)/How to Scatter in Blender 5.0 (Donut Part 7) [_-QsGTL7pS0].mkv", false, false, 10, [], 98, ~U[2025-12-05 20:15:04Z], ~U[2025-12-23 21:15:57Z], ~U[2025-12-23 21:15:57Z], "Let's add some sprinkles to that 🍩\nFinal part releasing in two days later\n\nIn this video you'll learn how to use the new scatter on surfaces modifier in Blender 5.0\n\n===Links🔗===\nBlender Guru: https://www.blenderguru.com/tutorials/blender-donut-v5-tutorial\nPoliigon: http://www.poliigon.com High-quality Models, Textures, HDRIs\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:18 Understanding the 3D cursor\n0:51 Modelling the sprinkles\n5:21 Modelling sprinkle variants\n7:23 The new Scatter on Surface Modifier\n12:44 Controlling where it scatters\n18:19 Fixing intersections\n24:04 Randomized colors\n35:16 Wrap up \n\n===Follow me🫰===\n\nTwitter: https://X.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "How to Scatter in Blender 5.0 (Donut Part 7)", "https://www.youtube.com/watch?v=_-QsGTL7pS0", "_-QsGTL7pS0", 2204, false, "/downloads/Blender Guru/2025-12-05 How to Scatter in Blender 5.0 (Donut Part 7)/How to Scatter in Blender 5.0 (Donut Part 7) [_-QsGTL7pS0].mkv", false, 10, ~U[2025-12-05 20:15:04Z]] 21:15:57.862 [debug] QUERY OK source="sources" db=0.2ms idle=15.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:15:57.862 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 21:15:57.863 [debug] QUERY OK source="media_items" db=0.2ms 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 [24129] 21:15:57.863 [debug] Current batch of media processed. Will check again in 1000ms 21:15:58.864 [debug] Current batch of media processed. Will check again in 1000ms 21:15:59.865 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Let's UV unwrap that coffee mug 🍩\nNew parts releasing every other day 🔜\n\nIn this video you'll learn how to UV unwrap a coffee mug, create coffee foam, and more.\n\n===Links🔗===\n\nPoliigon: https://www.poliigon.com/donut\nPoliigon addon: https://www.poliigon.com/blender\nJoin the Blender Guru Beginners Academy: https://academy.blenderguru.com/join\n\n=== Chapter Marks ✂️===\n0:00 Apply base texture\n2:54 Separating handle island\n5:35 UV unwrapping the rest of the mug\n9:12 Creating straight lines\n10:18 Installing the Mio3 UV extension\n12:25 Gridify feature\n13:38 Matching texel density\n18:10 Workflow dependent UVs\n20:09 Improving shader\n21:48 Tweaking a color texture\n25:02 Creating the coffee foam\n33:05 Learn more UV unwrapping\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "duration" => 2026, "filename" => "/downloads/Blender Guru/2025-12-04 Blender Basic UV Unwrapping Tutorial (Donut Part 6)/Blender Basic UV Unwrapping Tutorial (Donut Part 6) [yxAqN8TzFbo].mkv", "id" => "yxAqN8TzFbo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=yxAqN8TzFbo", "playlist_index" => 3, "timestamp" => 1764873220, "title" => "Blender Basic UV Unwrapping Tutorial (Donut Part 6)", "upload_date" => "20251204"} 21:15:59.866 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=860.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 (?)) [10] 21:15:59.867 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=861.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:15:59.867 [debug] QUERY OK source="media_items" db=0.5ms idle=861.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-04 18:33:40Z], 10] 21:15:59.869 [debug] QUERY OK source="media_items" db=0.8ms idle=862.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Let's UV unwrap that coffee mug 🍩\nNew parts releasing every other day 🔜\n\nIn this video you'll learn how to UV unwrap a coffee mug, create coffee foam, and more.\n\n===Links🔗===\n\nPoliigon: https://www.poliigon.com/donut\nPoliigon addon: https://www.poliigon.com/blender\nJoin the Blender Guru Beginners Academy: https://academy.blenderguru.com/join\n\n=== Chapter Marks ✂️===\n0:00 Apply base texture\n2:54 Separating handle island\n5:35 UV unwrapping the rest of the mug\n9:12 Creating straight lines\n10:18 Installing the Mio3 UV extension\n12:25 Gridify feature\n13:38 Matching texel density\n18:10 Workflow dependent UVs\n20:09 Improving shader\n21:48 Tweaking a color texture\n25:02 Creating the coffee foam\n33:05 Learn more UV unwrapping\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "Blender Basic UV Unwrapping Tutorial (Donut Part 6)", "8aa93bf6-33a6-470f-a308-6f11b4fd4ef6", "https://www.youtube.com/watch?v=yxAqN8TzFbo", "yxAqN8TzFbo", false, 2026, false, 3, "/downloads/Blender Guru/2025-12-04 Blender Basic UV Unwrapping Tutorial (Donut Part 6)/Blender Basic UV Unwrapping Tutorial (Donut Part 6) [yxAqN8TzFbo].mkv", false, false, 10, [], 98, ~U[2025-12-04 18:33:40Z], ~U[2025-12-23 21:15:59Z], ~U[2025-12-23 21:15:59Z], "Let's UV unwrap that coffee mug 🍩\nNew parts releasing every other day 🔜\n\nIn this video you'll learn how to UV unwrap a coffee mug, create coffee foam, and more.\n\n===Links🔗===\n\nPoliigon: https://www.poliigon.com/donut\nPoliigon addon: https://www.poliigon.com/blender\nJoin the Blender Guru Beginners Academy: https://academy.blenderguru.com/join\n\n=== Chapter Marks ✂️===\n0:00 Apply base texture\n2:54 Separating handle island\n5:35 UV unwrapping the rest of the mug\n9:12 Creating straight lines\n10:18 Installing the Mio3 UV extension\n12:25 Gridify feature\n13:38 Matching texel density\n18:10 Workflow dependent UVs\n20:09 Improving shader\n21:48 Tweaking a color texture\n25:02 Creating the coffee foam\n33:05 Learn more UV unwrapping\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "Blender Basic UV Unwrapping Tutorial (Donut Part 6)", "https://www.youtube.com/watch?v=yxAqN8TzFbo", "yxAqN8TzFbo", 2026, false, "/downloads/Blender Guru/2025-12-04 Blender Basic UV Unwrapping Tutorial (Donut Part 6)/Blender Basic UV Unwrapping Tutorial (Donut Part 6) [yxAqN8TzFbo].mkv", false, 10, ~U[2025-12-04 18:33:40Z]] 21:15:59.869 [debug] QUERY OK source="sources" db=0.1ms idle=18.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:15:59.870 [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] 21:15:59.870 [debug] QUERY OK source="media_items" db=0.2ms idle=3.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [24132] 21:15:59.870 [debug] Current batch of media processed. Will check again in 1000ms 21:16:00.740 [info] {"source":"oban","duration":615,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:16:00.871 [debug] Current batch of media processed. Will check again in 1000ms 21:16:01.872 [debug] Current batch of media processed. Will check again in 1000ms 21:16:02.873 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Let's texture that donut 🍩\nNew parts releasing every other day 🔜\n\nIn this video we'll texture the table, plate, donut and icing using textures from Poliigon.\n\nDownload all textures: https://www.poliigon.com/donut\nDownload Poliigon addon: https://www.poliigon.com/blender\n\n\n=== Chapter Marks ✂️===\n0:20 Introduction\n0:20 Adding an image texture\n2:34 What are PBR Textures?\n4:24 Manually importing PBR textures\n15:57 Importing PBR textures with the Poliigon Addon\n18:13 Texturing the speckled plate\n21:37 Texturing the icing\n27:42 Texturing the donut\n\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "duration" => 1913, "filename" => "/downloads/Blender Guru/2025-12-02 Blender Basic Texturing Tutorial (Donut Part 5)/Blender Basic Texturing Tutorial (Donut Part 5) [h30ZJQrb4s8].mkv", "id" => "h30ZJQrb4s8", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=h30ZJQrb4s8", "playlist_index" => 4, "timestamp" => 1764711023, "title" => "Blender Basic Texturing Tutorial (Donut Part 5)", "upload_date" => "20251202"} 21:16:02.874 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1868.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [10] 21:16:02.875 [debug] QUERY OK source="sources" db=0.1ms idle=1869.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:02.875 [debug] QUERY OK source="media_items" db=0.6ms idle=1017.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-02 21:30:23Z], 10] 21:16:02.876 [debug] QUERY OK source="media_items" db=0.7ms idle=870.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Let's texture that donut 🍩\nNew parts releasing every other day 🔜\n\nIn this video we'll texture the table, plate, donut and icing using textures from Poliigon.\n\nDownload all textures: https://www.poliigon.com/donut\nDownload Poliigon addon: https://www.poliigon.com/blender\n\n\n=== Chapter Marks ✂️===\n0:20 Introduction\n0:20 Adding an image texture\n2:34 What are PBR Textures?\n4:24 Manually importing PBR textures\n15:57 Importing PBR textures with the Poliigon Addon\n18:13 Texturing the speckled plate\n21:37 Texturing the icing\n27:42 Texturing the donut\n\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "Blender Basic Texturing Tutorial (Donut Part 5)", "a65feddb-1d88-466d-bf5f-e295b9d348c3", "https://www.youtube.com/watch?v=h30ZJQrb4s8", "h30ZJQrb4s8", false, 1913, false, 4, "/downloads/Blender Guru/2025-12-02 Blender Basic Texturing Tutorial (Donut Part 5)/Blender Basic Texturing Tutorial (Donut Part 5) [h30ZJQrb4s8].mkv", false, false, 10, [], 98, ~U[2025-12-02 21:30:23Z], ~U[2025-12-23 21:16:02Z], ~U[2025-12-23 21:16:02Z], "Let's texture that donut 🍩\nNew parts releasing every other day 🔜\n\nIn this video we'll texture the table, plate, donut and icing using textures from Poliigon.\n\nDownload all textures: https://www.poliigon.com/donut\nDownload Poliigon addon: https://www.poliigon.com/blender\n\n\n=== Chapter Marks ✂️===\n0:20 Introduction\n0:20 Adding an image texture\n2:34 What are PBR Textures?\n4:24 Manually importing PBR textures\n15:57 Importing PBR textures with the Poliigon Addon\n18:13 Texturing the speckled plate\n21:37 Texturing the icing\n27:42 Texturing the donut\n\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "Blender Basic Texturing Tutorial (Donut Part 5)", "https://www.youtube.com/watch?v=h30ZJQrb4s8", "h30ZJQrb4s8", 1913, false, "/downloads/Blender Guru/2025-12-02 Blender Basic Texturing Tutorial (Donut Part 5)/Blender Basic Texturing Tutorial (Donut Part 5) [h30ZJQrb4s8].mkv", false, 10, ~U[2025-12-02 21:30:23Z]] 21:16:02.877 [debug] QUERY OK source="sources" db=0.1ms idle=17.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:02.877 [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] 21:16:02.878 [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 [24134] 21:16:02.878 [debug] Current batch of media processed. Will check again in 1000ms 21:16:03.879 [debug] Current batch of media processed. Will check again in 1000ms 21:16:04.880 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Let's render that donut 🍩\nNew parts releasing every other day.\n\nIn this video you'll learn how to model the plate, make the donut lumpy, create basic materials and do a render.\n\nAll Links🔗: https://www.blenderguru.com/tutorials/blender-donut-v5-tutorial\n\nPoliigon (My sister company): http://www.poliigon.com High-quality Models, Textures, HDRIs\n\n=== Chapter Marks ✂️===\n0:00 Model the Plate\n8:29 Using a Lattice to make the Donut lumpy\n16:03 Your First Render\n17:02 Controlling the Camera\n20:21 Using Raytracing\n22:35 Render View Mode\n23:30 Basic Materials\n26:30 SSS\n29:35 Adding the table\n32:02 The Beginners Academy\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "duration" => 2012, "filename" => "/downloads/Blender Guru/2025-11-30 Blender Basic Materials Tutorial (Donut Part 4)/Blender Basic Materials Tutorial (Donut Part 4) [5Xlu2zwbJd0].mkv", "id" => "5Xlu2zwbJd0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=5Xlu2zwbJd0", "playlist_index" => 5, "timestamp" => 1764529450, "title" => "Blender Basic Materials Tutorial (Donut Part 4)", "upload_date" => "20251130"} 21:16:04.881 [debug] QUERY OK source="sources" db=0.1ms idle=874.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 (?)) [10] 21:16:04.881 [debug] QUERY OK source="sources" db=0.1ms 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" = ?) [10] 21:16:04.882 [debug] QUERY OK source="media_items" db=0.6ms idle=875.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-30 19:04:10Z], 10] 21:16:04.883 [debug] QUERY OK source="media_items" db=0.9ms idle=876.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Let's render that donut 🍩\nNew parts releasing every other day.\n\nIn this video you'll learn how to model the plate, make the donut lumpy, create basic materials and do a render.\n\nAll Links🔗: https://www.blenderguru.com/tutorials/blender-donut-v5-tutorial\n\nPoliigon (My sister company): http://www.poliigon.com High-quality Models, Textures, HDRIs\n\n=== Chapter Marks ✂️===\n0:00 Model the Plate\n8:29 Using a Lattice to make the Donut lumpy\n16:03 Your First Render\n17:02 Controlling the Camera\n20:21 Using Raytracing\n22:35 Render View Mode\n23:30 Basic Materials\n26:30 SSS\n29:35 Adding the table\n32:02 The Beginners Academy\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "Blender Basic Materials Tutorial (Donut Part 4)", "f618f72e-8f4c-4793-bdcd-74ca4817e41c", "https://www.youtube.com/watch?v=5Xlu2zwbJd0", "5Xlu2zwbJd0", false, 2012, false, 5, "/downloads/Blender Guru/2025-11-30 Blender Basic Materials Tutorial (Donut Part 4)/Blender Basic Materials Tutorial (Donut Part 4) [5Xlu2zwbJd0].mkv", false, false, 10, [], 98, ~U[2025-11-30 19:04:10Z], ~U[2025-12-23 21:16:04Z], ~U[2025-12-23 21:16:04Z], "Let's render that donut 🍩\nNew parts releasing every other day.\n\nIn this video you'll learn how to model the plate, make the donut lumpy, create basic materials and do a render.\n\nAll Links🔗: https://www.blenderguru.com/tutorials/blender-donut-v5-tutorial\n\nPoliigon (My sister company): http://www.poliigon.com High-quality Models, Textures, HDRIs\n\n=== Chapter Marks ✂️===\n0:00 Model the Plate\n8:29 Using a Lattice to make the Donut lumpy\n16:03 Your First Render\n17:02 Controlling the Camera\n20:21 Using Raytracing\n22:35 Render View Mode\n23:30 Basic Materials\n26:30 SSS\n29:35 Adding the table\n32:02 The Beginners Academy\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "Blender Basic Materials Tutorial (Donut Part 4)", "https://www.youtube.com/watch?v=5Xlu2zwbJd0", "5Xlu2zwbJd0", 2012, false, "/downloads/Blender Guru/2025-11-30 Blender Basic Materials Tutorial (Donut Part 4)/Blender Basic Materials Tutorial (Donut Part 4) [5Xlu2zwbJd0].mkv", false, 10, ~U[2025-11-30 19:04:10Z]] 21:16:04.884 [debug] QUERY OK source="sources" db=0.1ms idle=20.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:04.884 [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] 21:16:04.884 [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 [24136] 21:16:04.885 [debug] Current batch of media processed. Will check again in 1000ms 21:16:05.886 [debug] Current batch of media processed. Will check again in 1000ms 21:16:06.887 [debug] Current batch of media processed. Will check again in 1000ms 21:16:07.888 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Let's glaze that donut 🍩\nNew parts releasing every other day 🔜\n\nIn this video you'll learn how to model and sculpt dripping icing over the donut using Blender 5.0.\n\nAll Links🔗: https://www.blenderguru.com/tutorials/blender-donut-v5-tutorial\n\n=== Chapter Marks :scissors:===\n0:00 Naming Objects\n2:01 Choosing the right technique\n3:16 Duplicating an Object \n4:08 Selecting half the donut\n5:46 Unstuck Yourself Guide\n7:35 Adding thickness\n8:36 Adding randomness\n13:03 Adding runoff droplets\n14:26 The Shrinkwrap Modifier\n24:40 Thickness Variation\n28:50 Inflate/Deflate Brush \n30:24 Homework - Create a Plate\n\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "duration" => 1883, "filename" => "/downloads/Blender Guru/2025-11-28 Blender Basic Organic Modelling Tutorial (Donut Part 3)/Blender Basic Organic Modelling Tutorial (Donut Part 3) [9OA2asQdi_U].mkv", "id" => "9OA2asQdi_U", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=9OA2asQdi_U", "playlist_index" => 6, "timestamp" => 1764358758, "title" => "Blender Basic Organic Modelling Tutorial (Donut Part 3)", "upload_date" => "20251128"} 21:16:07.889 [debug] QUERY OK source="sources" db=0.2ms idle=1880.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [10] 21:16:07.889 [debug] QUERY OK source="sources" db=0.3ms idle=1880.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:07.890 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=1881.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-28 19:39:18Z], 10] 21:16:07.892 [debug] QUERY OK source="media_items" db=0.8ms idle=1023.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Let's glaze that donut 🍩\nNew parts releasing every other day 🔜\n\nIn this video you'll learn how to model and sculpt dripping icing over the donut using Blender 5.0.\n\nAll Links🔗: https://www.blenderguru.com/tutorials/blender-donut-v5-tutorial\n\n=== Chapter Marks :scissors:===\n0:00 Naming Objects\n2:01 Choosing the right technique\n3:16 Duplicating an Object \n4:08 Selecting half the donut\n5:46 Unstuck Yourself Guide\n7:35 Adding thickness\n8:36 Adding randomness\n13:03 Adding runoff droplets\n14:26 The Shrinkwrap Modifier\n24:40 Thickness Variation\n28:50 Inflate/Deflate Brush \n30:24 Homework - Create a Plate\n\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "Blender Basic Organic Modelling Tutorial (Donut Part 3)", "bd31ac90-22d3-4ad4-ac12-e336ea20a182", "https://www.youtube.com/watch?v=9OA2asQdi_U", "9OA2asQdi_U", false, 1883, false, 6, "/downloads/Blender Guru/2025-11-28 Blender Basic Organic Modelling Tutorial (Donut Part 3)/Blender Basic Organic Modelling Tutorial (Donut Part 3) [9OA2asQdi_U].mkv", false, false, 10, [], 98, ~U[2025-11-28 19:39:18Z], ~U[2025-12-23 21:16:07Z], ~U[2025-12-23 21:16:07Z], "Let's glaze that donut 🍩\nNew parts releasing every other day 🔜\n\nIn this video you'll learn how to model and sculpt dripping icing over the donut using Blender 5.0.\n\nAll Links🔗: https://www.blenderguru.com/tutorials/blender-donut-v5-tutorial\n\n=== Chapter Marks :scissors:===\n0:00 Naming Objects\n2:01 Choosing the right technique\n3:16 Duplicating an Object \n4:08 Selecting half the donut\n5:46 Unstuck Yourself Guide\n7:35 Adding thickness\n8:36 Adding randomness\n13:03 Adding runoff droplets\n14:26 The Shrinkwrap Modifier\n24:40 Thickness Variation\n28:50 Inflate/Deflate Brush \n30:24 Homework - Create a Plate\n\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "Blender Basic Organic Modelling Tutorial (Donut Part 3)", "https://www.youtube.com/watch?v=9OA2asQdi_U", "9OA2asQdi_U", 1883, false, "/downloads/Blender Guru/2025-11-28 Blender Basic Organic Modelling Tutorial (Donut Part 3)/Blender Basic Organic Modelling Tutorial (Donut Part 3) [9OA2asQdi_U].mkv", false, 10, ~U[2025-11-28 19:39:18Z]] 21:16:07.892 [debug] QUERY OK source="sources" db=0.2ms idle=23.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:07.892 [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] 21:16:07.893 [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 [24139] 21:16:07.893 [debug] Current batch of media processed. Will check again in 1000ms 21:16:08.894 [debug] Current batch of media processed. Will check again in 1000ms 21:16:09.895 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Let's model that coffee mug ☕\n\nIn this video you'll learn how model a realistic coffee mug from a reference image, using Blender 5.0.\n\nAll Links🔗: https://www.blenderguru.com/tutorials/blender-donut-v5-tutorial\n\n=== Chapter Marks ✂️===\n0:00 Importance of Reference\n03:25 Adding a Reference Image\n07:31 Modelling the large forms\n10:18 The bottom lip\n13:25 Modelling the handle\n20:54 Joining the handle into itself\n23:36 Fixing shading artifacts\n27:09 Adding polish\n29:19 Homework!\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\n\nReference Image CC-BY: madaboutpottery.com", "duration" => 1850, "filename" => "/downloads/Blender Guru/2025-11-26 Blender Basic Modelling Tutorial (Donut Part 2)/Blender Basic Modelling Tutorial (Donut Part 2) [K1UyEdmSttQ].mkv", "id" => "K1UyEdmSttQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=K1UyEdmSttQ", "playlist_index" => 7, "timestamp" => 1764201120, "title" => "Blender Basic Modelling Tutorial (Donut Part 2)", "upload_date" => "20251126"} 21:16:09.896 [debug] QUERY OK source="sources" db=0.1ms idle=889.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 (?)) [10] 21:16:09.896 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:09.897 [debug] QUERY OK source="media_items" db=0.5ms idle=890.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-26 23:52:00Z], 10] 21:16:09.898 [debug] QUERY OK source="media_items" db=0.8ms idle=891.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Let's model that coffee mug ☕\n\nIn this video you'll learn how model a realistic coffee mug from a reference image, using Blender 5.0.\n\nAll Links🔗: https://www.blenderguru.com/tutorials/blender-donut-v5-tutorial\n\n=== Chapter Marks ✂️===\n0:00 Importance of Reference\n03:25 Adding a Reference Image\n07:31 Modelling the large forms\n10:18 The bottom lip\n13:25 Modelling the handle\n20:54 Joining the handle into itself\n23:36 Fixing shading artifacts\n27:09 Adding polish\n29:19 Homework!\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\n\nReference Image CC-BY: madaboutpottery.com", "Blender Basic Modelling Tutorial (Donut Part 2)", "88b3f0a9-35d6-4d29-8fe8-d688db7d97c3", "https://www.youtube.com/watch?v=K1UyEdmSttQ", "K1UyEdmSttQ", false, 1850, false, 7, "/downloads/Blender Guru/2025-11-26 Blender Basic Modelling Tutorial (Donut Part 2)/Blender Basic Modelling Tutorial (Donut Part 2) [K1UyEdmSttQ].mkv", false, false, 10, [], 98, ~U[2025-11-26 23:52:00Z], ~U[2025-12-23 21:16:09Z], ~U[2025-12-23 21:16:09Z], "Let's model that coffee mug ☕\n\nIn this video you'll learn how model a realistic coffee mug from a reference image, using Blender 5.0.\n\nAll Links🔗: https://www.blenderguru.com/tutorials/blender-donut-v5-tutorial\n\n=== Chapter Marks ✂️===\n0:00 Importance of Reference\n03:25 Adding a Reference Image\n07:31 Modelling the large forms\n10:18 The bottom lip\n13:25 Modelling the handle\n20:54 Joining the handle into itself\n23:36 Fixing shading artifacts\n27:09 Adding polish\n29:19 Homework!\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\n\nReference Image CC-BY: madaboutpottery.com", "Blender Basic Modelling Tutorial (Donut Part 2)", "https://www.youtube.com/watch?v=K1UyEdmSttQ", "K1UyEdmSttQ", 1850, false, "/downloads/Blender Guru/2025-11-26 Blender Basic Modelling Tutorial (Donut Part 2)/Blender Basic Modelling Tutorial (Donut Part 2) [K1UyEdmSttQ].mkv", false, 10, ~U[2025-11-26 23:52:00Z]] 21:16:09.899 [debug] QUERY OK source="sources" db=0.2ms idle=25.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:09.899 [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] 21:16:09.900 [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 [24141] 21:16:09.900 [debug] Current batch of media processed. Will check again in 1000ms 21:16:10.901 [debug] Current batch of media processed. Will check again in 1000ms 21:16:11.902 [debug] Current batch of media processed. Will check again in 1000ms 21:16:12.903 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Here we go again 🍩 More parts releasing every other day.\n\nIn this video you'll learn how to use Blender 5.0's core tools and techniques by making a donut.\n\n===Links🔗===\n\nDownload Blender: https://www.blender.org/download/\n\nBeginner Academy: https://academy.blenderguru.com/join\n\nKeyboard Shortcut Guide: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=drive_link\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nBlender Guru: http://www.blenderguru.com \nPoliigon (My sister company): http://www.poliigon.com High-quality Models, Textures, HDRIs\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:50 Download and Install Blender\n1:30 Navigation\n6:02 Adding objects\n9:32 Shade Smooth\n10:27 Creating a coffee mug\n12:13 Move Tool\n15:42 Edit Mode\n17:23 Different Select Options\n17:57 Delete Face (creating the opening for mug)\n18:27 Introduction to Modifiers\n20:40 Add Subsurf Modifier\n22:43 Add Loop cuts\n24:31 Inset Tool\n26:67 Change thickness of the cup\n27:11 Save Blender File Project \n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "duration" => 1709, "filename" => "/downloads/Blender Guru/2025-11-24 Blender Donut Tutorial (2026)/Blender Donut Tutorial (2026) [-tbSCMbJA6o].mkv", "id" => "-tbSCMbJA6o", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=-tbSCMbJA6o", "playlist_index" => 8, "timestamp" => 1764023407, "title" => "Blender Donut Tutorial (2026)", "upload_date" => "20251124"} 21:16:12.904 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=1897.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [10] 21:16:12.905 [debug] QUERY OK source="sources" db=0.1ms idle=1898.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:12.906 [debug] QUERY OK source="media_items" db=0.5ms idle=1899.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-24 22:30:07Z], 10] 21:16:12.911 [debug] QUERY OK source="media_items" db=4.5ms idle=1028.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Here we go again 🍩 More parts releasing every other day.\n\nIn this video you'll learn how to use Blender 5.0's core tools and techniques by making a donut.\n\n===Links🔗===\n\nDownload Blender: https://www.blender.org/download/\n\nBeginner Academy: https://academy.blenderguru.com/join\n\nKeyboard Shortcut Guide: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=drive_link\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nBlender Guru: http://www.blenderguru.com \nPoliigon (My sister company): http://www.poliigon.com High-quality Models, Textures, HDRIs\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:50 Download and Install Blender\n1:30 Navigation\n6:02 Adding objects\n9:32 Shade Smooth\n10:27 Creating a coffee mug\n12:13 Move Tool\n15:42 Edit Mode\n17:23 Different Select Options\n17:57 Delete Face (creating the opening for mug)\n18:27 Introduction to Modifiers\n20:40 Add Subsurf Modifier\n22:43 Add Loop cuts\n24:31 Inset Tool\n26:67 Change thickness of the cup\n27:11 Save Blender File Project \n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "Blender Donut Tutorial (2026)", "e5a3b102-fff9-4c47-b619-e968176ba22c", "https://www.youtube.com/watch?v=-tbSCMbJA6o", "-tbSCMbJA6o", false, 1709, false, 8, "/downloads/Blender Guru/2025-11-24 Blender Donut Tutorial (2026)/Blender Donut Tutorial (2026) [-tbSCMbJA6o].mkv", false, false, 10, [], 98, ~U[2025-11-24 22:30:07Z], ~U[2025-12-23 21:16:12Z], ~U[2025-12-23 21:16:12Z], "Here we go again 🍩 More parts releasing every other day.\n\nIn this video you'll learn how to use Blender 5.0's core tools and techniques by making a donut.\n\n===Links🔗===\n\nDownload Blender: https://www.blender.org/download/\n\nBeginner Academy: https://academy.blenderguru.com/join\n\nKeyboard Shortcut Guide: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=drive_link\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nBlender Guru: http://www.blenderguru.com \nPoliigon (My sister company): http://www.poliigon.com High-quality Models, Textures, HDRIs\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:50 Download and Install Blender\n1:30 Navigation\n6:02 Adding objects\n9:32 Shade Smooth\n10:27 Creating a coffee mug\n12:13 Move Tool\n15:42 Edit Mode\n17:23 Different Select Options\n17:57 Delete Face (creating the opening for mug)\n18:27 Introduction to Modifiers\n20:40 Add Subsurf Modifier\n22:43 Add Loop cuts\n24:31 Inset Tool\n26:67 Change thickness of the cup\n27:11 Save Blender File Project \n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "Blender Donut Tutorial (2026)", "https://www.youtube.com/watch?v=-tbSCMbJA6o", "-tbSCMbJA6o", 1709, false, "/downloads/Blender Guru/2025-11-24 Blender Donut Tutorial (2026)/Blender Donut Tutorial (2026) [-tbSCMbJA6o].mkv", false, 10, ~U[2025-11-24 22:30:07Z]] 21:16:12.911 [debug] QUERY OK source="sources" db=0.3ms idle=31.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:12.911 [debug] QUERY OK source="media_profiles" db=0.1ms idle=6.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 21:16:12.912 [debug] QUERY OK source="media_items" db=0.1ms idle=6.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 [24143] 21:16:12.912 [debug] Current batch of media processed. Will check again in 1000ms 21:16:13.913 [debug] Current batch of media processed. Will check again in 1000ms 21:16:14.915 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Signup to Poliigon: https://www.poliigon.com/blenderguru\n\n===Links🔗===\n\nGeonode setup: https://drive.google.com/file/d/1pwqqoM3V5NcMs5VmsRzlMjR1yIFawJpf/view?usp=sharing\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://www.dropbox.com/scl/fi/dboz7fuh0f5255n5ocrdl/BlenderKeymap-IndustryCompatible_v2.pdf?rlkey=2yxe23jev9y2qmdg7txrzy8ip&dl=0\n\nBlender Guru: http://www.blenderguru.com \nPoliigon (My sister company): https://www.poliigon.com/blenderguru \n\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\n\nCredits:\nProducer and editor: @rileyb3d \nMineshaft Dressing: Michael Eng\nGeometry Node Simulation: Sai Charon\nScript and Direction: Me", "duration" => 611, "filename" => "/downloads/Blender Guru/2025-09-17 How to Make a Mineshaft Ride in Blender/How to Make a Mineshaft Ride in Blender [gaYjZ8IBvds].mkv", "id" => "gaYjZ8IBvds", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=gaYjZ8IBvds", "playlist_index" => 9, "timestamp" => 1758097956, "title" => "How to Make a Mineshaft Ride in Blender", "upload_date" => "20250917"} 21:16:14.916 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=909.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [10] 21:16:14.916 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=909.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:14.917 [debug] QUERY OK source="media_items" db=0.7ms idle=910.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-17 08:32:36Z], 10] 21:16:14.919 [debug] QUERY OK source="media_items" db=0.9ms idle=911.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Signup to Poliigon: https://www.poliigon.com/blenderguru\n\n===Links🔗===\n\nGeonode setup: https://drive.google.com/file/d/1pwqqoM3V5NcMs5VmsRzlMjR1yIFawJpf/view?usp=sharing\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://www.dropbox.com/scl/fi/dboz7fuh0f5255n5ocrdl/BlenderKeymap-IndustryCompatible_v2.pdf?rlkey=2yxe23jev9y2qmdg7txrzy8ip&dl=0\n\nBlender Guru: http://www.blenderguru.com \nPoliigon (My sister company): https://www.poliigon.com/blenderguru \n\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\n\nCredits:\nProducer and editor: @rileyb3d \nMineshaft Dressing: Michael Eng\nGeometry Node Simulation: Sai Charon\nScript and Direction: Me", "How to Make a Mineshaft Ride in Blender", "00fe5dc8-c482-41fa-8db5-0a0dda475ebc", "https://www.youtube.com/watch?v=gaYjZ8IBvds", "gaYjZ8IBvds", false, 611, false, 9, "/downloads/Blender Guru/2025-09-17 How to Make a Mineshaft Ride in Blender/How to Make a Mineshaft Ride in Blender [gaYjZ8IBvds].mkv", false, false, 10, [], 98, ~U[2025-09-17 08:32:36Z], ~U[2025-12-23 21:16:14Z], ~U[2025-12-23 21:16:14Z], "Signup to Poliigon: https://www.poliigon.com/blenderguru\n\n===Links🔗===\n\nGeonode setup: https://drive.google.com/file/d/1pwqqoM3V5NcMs5VmsRzlMjR1yIFawJpf/view?usp=sharing\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://www.dropbox.com/scl/fi/dboz7fuh0f5255n5ocrdl/BlenderKeymap-IndustryCompatible_v2.pdf?rlkey=2yxe23jev9y2qmdg7txrzy8ip&dl=0\n\nBlender Guru: http://www.blenderguru.com \nPoliigon (My sister company): https://www.poliigon.com/blenderguru \n\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\n\nCredits:\nProducer and editor: @rileyb3d \nMineshaft Dressing: Michael Eng\nGeometry Node Simulation: Sai Charon\nScript and Direction: Me", "How to Make a Mineshaft Ride in Blender", "https://www.youtube.com/watch?v=gaYjZ8IBvds", "gaYjZ8IBvds", 611, false, "/downloads/Blender Guru/2025-09-17 How to Make a Mineshaft Ride in Blender/How to Make a Mineshaft Ride in Blender [gaYjZ8IBvds].mkv", false, 10, ~U[2025-09-17 08:32:36Z]] 21:16:14.919 [debug] QUERY OK source="sources" db=0.2ms idle=35.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" = ?) [10] 21:16:14.920 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=3.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 21:16:14.920 [debug] QUERY OK source="media_items" db=0.2ms 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 [24145] 21:16:14.920 [debug] Current batch of media processed. Will check again in 1000ms 21:16:15.921 [debug] Current batch of media processed. Will check again in 1000ms 21:16:16.922 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Don't learn geometry nodes. Join the waitlist for the Blender Guru Academy: https://blender-guru.mykajabi.com/opt-in\nBuy my donut shirt: http://merch.blenderguru.com\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:17 Don't Learn Geometry Nodes\n2:09 Watch More Tutorials\n3:21 Stay Motivated\n5:05 Use AI\n6:28 Stick to Reference\n\nHow to Setup a Wallpaper Cycle:\nWindows 11: https://youtu.be/5qTuoj_TYEg?si=aKX8R0NEsMr4qqFk\nMac: https://youtu.be/d5bdOf1t9ds?si=Dt6uMaCu9ehVQFc9\niPhone: https://youtu.be/T6Tb73eY_M4?si=coLKCjA3iTxwkjYe\nAndroid: https://youtu.be/enY7c8i_oKc?si=U44I7MhT66iIGk1i\n\n===Follow me🫰===\nX: https://x.com/andrewpprice\nInstagram: https://www.instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\nThis Week in 3D Newsletter: https://www.blenderguru.com/thisweekin3d", "duration" => 482, "filename" => "/downloads/Blender Guru/2025-06-25 Starting Blender? Advice from a Pro/Starting Blender? Advice from a Pro [-rO1o5uzCOc].mkv", "id" => "-rO1o5uzCOc", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=-rO1o5uzCOc", "playlist_index" => 10, "timestamp" => 1750892359, "title" => "Starting Blender? Advice from a Pro", "upload_date" => "20250625"} 21:16:16.923 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=916.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [10] 21:16:16.923 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=917.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:16.924 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=917.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-25 22:59:19Z], 10] 21:16:16.926 [debug] QUERY OK source="media_items" db=0.9ms idle=918.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Don't learn geometry nodes. Join the waitlist for the Blender Guru Academy: https://blender-guru.mykajabi.com/opt-in\nBuy my donut shirt: http://merch.blenderguru.com\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:17 Don't Learn Geometry Nodes\n2:09 Watch More Tutorials\n3:21 Stay Motivated\n5:05 Use AI\n6:28 Stick to Reference\n\nHow to Setup a Wallpaper Cycle:\nWindows 11: https://youtu.be/5qTuoj_TYEg?si=aKX8R0NEsMr4qqFk\nMac: https://youtu.be/d5bdOf1t9ds?si=Dt6uMaCu9ehVQFc9\niPhone: https://youtu.be/T6Tb73eY_M4?si=coLKCjA3iTxwkjYe\nAndroid: https://youtu.be/enY7c8i_oKc?si=U44I7MhT66iIGk1i\n\n===Follow me🫰===\nX: https://x.com/andrewpprice\nInstagram: https://www.instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\nThis Week in 3D Newsletter: https://www.blenderguru.com/thisweekin3d", "Starting Blender? Advice from a Pro", "f54d071a-a8c7-4585-8a08-5e6e3e392f9f", "https://www.youtube.com/watch?v=-rO1o5uzCOc", "-rO1o5uzCOc", false, 482, false, 10, "/downloads/Blender Guru/2025-06-25 Starting Blender? Advice from a Pro/Starting Blender? Advice from a Pro [-rO1o5uzCOc].mkv", false, false, 10, [], 98, ~U[2025-06-25 22:59:19Z], ~U[2025-12-23 21:16:16Z], ~U[2025-12-23 21:16:16Z], "Don't learn geometry nodes. Join the waitlist for the Blender Guru Academy: https://blender-guru.mykajabi.com/opt-in\nBuy my donut shirt: http://merch.blenderguru.com\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:17 Don't Learn Geometry Nodes\n2:09 Watch More Tutorials\n3:21 Stay Motivated\n5:05 Use AI\n6:28 Stick to Reference\n\nHow to Setup a Wallpaper Cycle:\nWindows 11: https://youtu.be/5qTuoj_TYEg?si=aKX8R0NEsMr4qqFk\nMac: https://youtu.be/d5bdOf1t9ds?si=Dt6uMaCu9ehVQFc9\niPhone: https://youtu.be/T6Tb73eY_M4?si=coLKCjA3iTxwkjYe\nAndroid: https://youtu.be/enY7c8i_oKc?si=U44I7MhT66iIGk1i\n\n===Follow me🫰===\nX: https://x.com/andrewpprice\nInstagram: https://www.instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\nThis Week in 3D Newsletter: https://www.blenderguru.com/thisweekin3d", "Starting Blender? Advice from a Pro", "https://www.youtube.com/watch?v=-rO1o5uzCOc", "-rO1o5uzCOc", 482, false, "/downloads/Blender Guru/2025-06-25 Starting Blender? Advice from a Pro/Starting Blender? Advice from a Pro [-rO1o5uzCOc].mkv", false, 10, ~U[2025-06-25 22:59:19Z]] 21:16:16.926 [debug] QUERY OK source="sources" db=0.1ms idle=39.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:16.927 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 21:16:16.927 [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 [24147] 21:16:16.927 [debug] Current batch of media processed. Will check again in 1000ms 21:16:17.928 [debug] Current batch of media processed. Will check again in 1000ms 21:16:18.929 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "10 render hacks I learned after 20 years of using Blender.\n\nDownload the Poliigon addon: https://www.poliigon.com/blender?utm_campaign=renderhacks&utm_source=youtube&utm_medium=bg\n\nJoin the Blender Guru Discord: https://blenderguru.com/discord\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:19 Instancing\n1:05 Frustum Culling\n1:55 Light Clamping\n2:23 Simplify Window Glass\n3:01 Persistent Data\n3:42 Noise Threshold\n4:39 Use Smaller Textures\n6:07 Fast GI Approximation\n6:53 Switch to GPU\n7:44 Simplify Geometry\n\n\n===Follow me🫰===\n\nX: https://x.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\nThis Week in 3D Newsletter: https://www.blenderguru.com/thisweekin3d", "duration" => 541, "filename" => "/downloads/Blender Guru/2025-05-30 10 Easy Ways to Render Faster in Blender/10 Easy Ways to Render Faster in Blender [kIW648Cfo18].mkv", "id" => "kIW648Cfo18", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=kIW648Cfo18", "playlist_index" => 11, "timestamp" => 1748638391, "title" => "10 Easy Ways to Render Faster in Blender", "upload_date" => "20250530"} 21:16:18.930 [debug] QUERY OK source="sources" db=0.3ms idle=923.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [10] 21:16:18.931 [debug] QUERY OK source="sources" db=0.2ms idle=924.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:18.932 [debug] QUERY OK source="media_items" db=0.8ms idle=924.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-05-30 20:53:11Z], 10] 21:16:18.933 [debug] QUERY OK source="media_items" db=1.0ms idle=926.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["10 render hacks I learned after 20 years of using Blender.\n\nDownload the Poliigon addon: https://www.poliigon.com/blender?utm_campaign=renderhacks&utm_source=youtube&utm_medium=bg\n\nJoin the Blender Guru Discord: https://blenderguru.com/discord\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:19 Instancing\n1:05 Frustum Culling\n1:55 Light Clamping\n2:23 Simplify Window Glass\n3:01 Persistent Data\n3:42 Noise Threshold\n4:39 Use Smaller Textures\n6:07 Fast GI Approximation\n6:53 Switch to GPU\n7:44 Simplify Geometry\n\n\n===Follow me🫰===\n\nX: https://x.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\nThis Week in 3D Newsletter: https://www.blenderguru.com/thisweekin3d", "10 Easy Ways to Render Faster in Blender", "0a82556b-c4c7-4ca1-afa5-4efa0bb47c60", "https://www.youtube.com/watch?v=kIW648Cfo18", "kIW648Cfo18", false, 541, false, 11, "/downloads/Blender Guru/2025-05-30 10 Easy Ways to Render Faster in Blender/10 Easy Ways to Render Faster in Blender [kIW648Cfo18].mkv", false, false, 10, [], 98, ~U[2025-05-30 20:53:11Z], ~U[2025-12-23 21:16:18Z], ~U[2025-12-23 21:16:18Z], "10 render hacks I learned after 20 years of using Blender.\n\nDownload the Poliigon addon: https://www.poliigon.com/blender?utm_campaign=renderhacks&utm_source=youtube&utm_medium=bg\n\nJoin the Blender Guru Discord: https://blenderguru.com/discord\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:19 Instancing\n1:05 Frustum Culling\n1:55 Light Clamping\n2:23 Simplify Window Glass\n3:01 Persistent Data\n3:42 Noise Threshold\n4:39 Use Smaller Textures\n6:07 Fast GI Approximation\n6:53 Switch to GPU\n7:44 Simplify Geometry\n\n\n===Follow me🫰===\n\nX: https://x.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\nThis Week in 3D Newsletter: https://www.blenderguru.com/thisweekin3d", "10 Easy Ways to Render Faster in Blender", "https://www.youtube.com/watch?v=kIW648Cfo18", "kIW648Cfo18", 541, false, "/downloads/Blender Guru/2025-05-30 10 Easy Ways to Render Faster in Blender/10 Easy Ways to Render Faster in Blender [kIW648Cfo18].mkv", false, 10, ~U[2025-05-30 20:53:11Z]] 21:16:18.934 [debug] QUERY OK source="sources" db=0.2ms idle=42.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" = ?) [10] 21:16:18.934 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 21:16:18.935 [debug] QUERY OK source="media_items" db=0.2ms 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 [24149] 21:16:18.935 [debug] Current batch of media processed. Will check again in 1000ms 21:16:18.936 [info] {"source":"oban","duration":779,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:16:19.936 [debug] Current batch of media processed. Will check again in 1000ms 21:16:20.938 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "This is a complete course for understanding how to use the Eevee rendering engine in Blender. Eevee is an (almost) real-time rendering engine. So you can render animation sequences in minutes rather than days with Cycles. This video will take complete beginners through everything they need to know to get started with Eevee. You'll learn the theory of how Eevee works, how to fix common problems, and how to optimize an Eevee scene for rendering.\n\n===Links🔗===\n\nPoliigon Blender Addon: https://www.poliigon.com/blender?utm_campaign=eevee&utm_source=youtube&utm_medium=bg\n\nBlended Reflection Bug: https://projects.blender.org/blender/blender/issues/135198#issuecomment-1507735\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:56 Modelling the room\n2:01 Fixing Eevee light bleed\n05:00 Why does Eevee have noise?\n06:10 Increasing samples to specific areas\n08:10 Adding reflections in Eevee\n09:06 Fixing reflection artifacts\n14:44 Intro to Reflection Probes\n17:39 Spherical Probes\n20:28 Light Bounces\n26:00 Optimizing Raytracing\n27:50 Improving GI Bounces\n29:18 Introduction to Volume Probes (Baked Lighting)\n35:05 Getting a perfect Volume Probe bake\n42:21 Surfel Resolution\n43:20 Using image textures \n47:26 Improving texture sharpness\n48:28 Using HDRIs\n52:44 Glass\n57:05 Thin glass (cups and windows)\n1:02:44 Volumetrics\n1:04:06 What to do when volume probes look dark\n1:06:48 Fixing World Light bleed\n1:07:44 Fixing flickering alpha maps\n1:08:50 Optimizing textures\n1:11:35 Optimizing reflection probes\n1:14:16 Sphere probe resolution\n1:14:58 Raytracing optimizations\n\n\n===Follow me🫰===\n\nX: https://x.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\n\nMusic ID: JFTPWZDFYLB752M4", "duration" => 4614, "filename" => "/downloads/Blender Guru/2025-04-09 How to use Eevee - Full Blender Course/How to use Eevee - Full Blender Course [-gW6vk_OuNQ].mkv", "id" => "-gW6vk_OuNQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=-gW6vk_OuNQ", "playlist_index" => 12, "timestamp" => 1744220292, "title" => "How to use Eevee - Full Blender Course", "upload_date" => "20250409"} 21:16:20.938 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=930.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [10] 21:16:20.939 [debug] QUERY OK source="sources" db=0.2ms idle=931.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:20.940 [debug] QUERY OK source="media_items" db=0.6ms idle=931.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-04-09 17:38:12Z], 10] 21:16:20.941 [debug] QUERY OK source="media_items" db=1.0ms idle=932.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["This is a complete course for understanding how to use the Eevee rendering engine in Blender. Eevee is an (almost) real-time rendering engine. So you can render animation sequences in minutes rather than days with Cycles. This video will take complete beginners through everything they need to know to get started with Eevee. You'll learn the theory of how Eevee works, how to fix common problems, and how to optimize an Eevee scene for rendering.\n\n===Links🔗===\n\nPoliigon Blender Addon: https://www.poliigon.com/blender?utm_campaign=eevee&utm_source=youtube&utm_medium=bg\n\nBlended Reflection Bug: https://projects.blender.org/blender/blender/issues/135198#issuecomment-1507735\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:56 Modelling the room\n2:01 Fixing Eevee light bleed\n05:00 Why does Eevee have noise?\n06:10 Increasing samples to specific areas\n08:10 Adding reflections in Eevee\n09:06 Fixing reflection artifacts\n14:44 Intro to Reflection Probes\n17:39 Spherical Probes\n20:28 Light Bounces\n26:00 Optimizing Raytracing\n27:50 Improving GI Bounces\n29:18 Introduction to Volume Probes (Baked Lighting)\n35:05 Getting a perfect Volume Probe bake\n42:21 Surfel Resolution\n43:20 Using image textures \n47:26 Improving texture sharpness\n48:28 Using HDRIs\n52:44 Glass\n57:05 Thin glass (cups and windows)\n1:02:44 Volumetrics\n1:04:06 What to do when volume probes look dark\n1:06:48 Fixing World Light bleed\n1:07:44 Fixing flickering alpha maps\n1:08:50 Optimizing textures\n1:11:35 Optimizing reflection probes\n1:14:16 Sphere probe resolution\n1:14:58 Raytracing optimizations\n\n\n===Follow me🫰===\n\nX: https://x.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\n\nMusic ID: JFTPWZDFYLB752M4", "How to use Eevee - Full Blender Course", "444da154-e21d-46b6-b05b-29cdb3e459ae", "https://www.youtube.com/watch?v=-gW6vk_OuNQ", "-gW6vk_OuNQ", false, 4614, false, 12, "/downloads/Blender Guru/2025-04-09 How to use Eevee - Full Blender Course/How to use Eevee - Full Blender Course [-gW6vk_OuNQ].mkv", false, false, 10, [], 98, ~U[2025-04-09 17:38:12Z], ~U[2025-12-23 21:16:20Z], ~U[2025-12-23 21:16:20Z], "This is a complete course for understanding how to use the Eevee rendering engine in Blender. Eevee is an (almost) real-time rendering engine. So you can render animation sequences in minutes rather than days with Cycles. This video will take complete beginners through everything they need to know to get started with Eevee. You'll learn the theory of how Eevee works, how to fix common problems, and how to optimize an Eevee scene for rendering.\n\n===Links🔗===\n\nPoliigon Blender Addon: https://www.poliigon.com/blender?utm_campaign=eevee&utm_source=youtube&utm_medium=bg\n\nBlended Reflection Bug: https://projects.blender.org/blender/blender/issues/135198#issuecomment-1507735\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:56 Modelling the room\n2:01 Fixing Eevee light bleed\n05:00 Why does Eevee have noise?\n06:10 Increasing samples to specific areas\n08:10 Adding reflections in Eevee\n09:06 Fixing reflection artifacts\n14:44 Intro to Reflection Probes\n17:39 Spherical Probes\n20:28 Light Bounces\n26:00 Optimizing Raytracing\n27:50 Improving GI Bounces\n29:18 Introduction to Volume Probes (Baked Lighting)\n35:05 Getting a perfect Volume Probe bake\n42:21 Surfel Resolution\n43:20 Using image textures \n47:26 Improving texture sharpness\n48:28 Using HDRIs\n52:44 Glass\n57:05 Thin glass (cups and windows)\n1:02:44 Volumetrics\n1:04:06 What to do when volume probes look dark\n1:06:48 Fixing World Light bleed\n1:07:44 Fixing flickering alpha maps\n1:08:50 Optimizing textures\n1:11:35 Optimizing reflection probes\n1:14:16 Sphere probe resolution\n1:14:58 Raytracing optimizations\n\n\n===Follow me🫰===\n\nX: https://x.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\n\nMusic ID: JFTPWZDFYLB752M4", "How to use Eevee - Full Blender Course", "https://www.youtube.com/watch?v=-gW6vk_OuNQ", "-gW6vk_OuNQ", 4614, false, "/downloads/Blender Guru/2025-04-09 How to use Eevee - Full Blender Course/How to use Eevee - Full Blender Course [-gW6vk_OuNQ].mkv", false, 10, ~U[2025-04-09 17:38:12Z]] 21:16:20.942 [debug] QUERY OK source="sources" db=0.2ms idle=46.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:20.942 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=3.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 21:16:20.943 [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 [24151] 21:16:20.943 [debug] Current batch of media processed. Will check again in 1000ms 21:16:21.944 [debug] Current batch of media processed. Will check again in 1000ms 21:16:22.945 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "A full tutorial course on the fundamentals of texturing and shaders in Blender. Learn how to make a grungy brick wall for realistic environments.\n\nWhat you'll learn:\n0:00 Shader Fundamentals\n5:50 Procedural Textures\n09:05 Image Textures\n13:20 The Importance of PBR Textures\n17:09 UV Unwrapping\n20:22 PBR Texture Setup\n29:55 You're wrong about bumps!\n40:20 Node Wrangler Addon\n43:16 Poliigon Addon\n45:30 Adjusting a texture\n50:22 Breaking up repetition\n1:03:20 Image texture painting\n1:06:54 Vertex Painting\n1:12:12 The \"Color Burn Technique\"\n1:22:23 Using Decals\n1:29:36 Wet leak patterns\n1:36:40 A challenge\n1:38:06 Efflorescence effect\n1:40:50 Desaturation effect\n1:44:33 Spalling effect\n1:51:22 The final node setup\n\n===Links🔗===\n-Join the waitlist for my upcoming Blender course: https://blender-guru.mykajabi.com/opt-in\nFree Brick Texture: https://www.poliigon.com/texture/dutch-bond-reclaimed-brick-texture-dull-brown/8320?utm_campaign=texturingbasics&utm_source=youtube&utm_medium=bg\n\n-Poliigon Addon: https://www.poliigon.com/blender?utm_campaign=texturingbasics&utm_source=youtube&utm_medium=bg\n\n-Graffiti Texture: https://drive.google.com/file/d/17edzCP56HMX8731HAACz6Dh-Bmxzuw1a/view?usp=drive_link\n\n-Abandoned Brick reference: https://www.flickr.com/photos/slworking/4664255917/\n\n-White Efflorescence references: https://www.alamy.com/the-old-abandoned-unfinished-brick-building-close-up-image214317155.html?imageid=F4D792C6-FF04-48A3-BBA1-554C9EA4F066&p=282969&pn=3&searchId=3cf46225d0dab2cfe6cbf6f01607d032&searchtype=0 \nhttps://unsplash.com/photos/brown-bricked-wall-f4_1ZqzokZI\n\n-Scale Reference Man model (cc0): https://drive.google.com/file/d/149WEThtRHrslWbHeddzAGXmlBf8RWkpC/view?usp=drive_link\n\n===Animation Credits===\nConcept & Layout - One Pixel Brush (https://onepixelbrush.com/)\nScene Polish & Camera Animation - Pawel Pecherzewski\nShader - Andrew Price\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: http://www.linkedin.com/in/andrew-price-17678911\nPoliigon: http://www.poliigon.com\n\nMusic license ID JFTPWZDFYLB752M4", "duration" => 6790, "filename" => "/downloads/Blender Guru/2024-07-26 How to Texture in Blender - Full Course/How to Texture in Blender - Full Course [uHCJoNEWjXo].mp4", "id" => "uHCJoNEWjXo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=uHCJoNEWjXo", "playlist_index" => 13, "timestamp" => 1722027518, "title" => "How to Texture in Blender - Full Course", "upload_date" => "20240726"} 21:16:22.946 [debug] QUERY OK source="sources" db=0.2ms idle=938.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [10] 21:16:22.947 [debug] QUERY OK source="sources" db=0.2ms idle=939.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:22.947 [debug] QUERY OK source="media_items" db=0.5ms idle=939.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2024-07-26 20:58:38Z], 10] 21:16:22.949 [debug] QUERY OK source="media_items" db=1.4ms idle=940.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["A full tutorial course on the fundamentals of texturing and shaders in Blender. Learn how to make a grungy brick wall for realistic environments.\n\nWhat you'll learn:\n0:00 Shader Fundamentals\n5:50 Procedural Textures\n09:05 Image Textures\n13:20 The Importance of PBR Textures\n17:09 UV Unwrapping\n20:22 PBR Texture Setup\n29:55 You're wrong about bumps!\n40:20 Node Wrangler Addon\n43:16 Poliigon Addon\n45:30 Adjusting a texture\n50:22 Breaking up repetition\n1:03:20 Image texture painting\n1:06:54 Vertex Painting\n1:12:12 The \"Color Burn Technique\"\n1:22:23 Using Decals\n1:29:36 Wet leak patterns\n1:36:40 A challenge\n1:38:06 Efflorescence effect\n1:40:50 Desaturation effect\n1:44:33 Spalling effect\n1:51:22 The final node setup\n\n===Links🔗===\n-Join the waitlist for my upcoming Blender course: https://blender-guru.mykajabi.com/opt-in\nFree Brick Texture: https://www.poliigon.com/texture/dutch-bond-reclaimed-brick-texture-dull-brown/8320?utm_campaign=texturingbasics&utm_source=youtube&utm_medium=bg\n\n-Poliigon Addon: https://www.poliigon.com/blender?utm_campaign=texturingbasics&utm_source=youtube&utm_medium=bg\n\n-Graffiti Texture: https://drive.google.com/file/d/17edzCP56HMX8731HAACz6Dh-Bmxzuw1a/view?usp=drive_link\n\n-Abandoned Brick reference: https://www.flickr.com/photos/slworking/4664255917/\n\n-White Efflorescence references: https://www.alamy.com/the-old-abandoned-unfinished-brick-building-close-up-image214317155.html?imageid=F4D792C6-FF04-48A3-BBA1-554C9EA4F066&p=282969&pn=3&searchId=3cf46225d0dab2cfe6cbf6f01607d032&searchtype=0 \nhttps://unsplash.com/photos/brown-bricked-wall-f4_1ZqzokZI\n\n-Scale Reference Man model (cc0): https://drive.google.com/file/d/149WEThtRHrslWbHeddzAGXmlBf8RWkpC/view?usp=drive_link\n\n===Animation Credits===\nConcept & Layout - One Pixel Brush (https://onepixelbrush.com/)\nScene Polish & Camera Animation - Pawel Pecherzewski\nShader - Andrew Price\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: http://www.linkedin.com/in/andrew-price-17678911\nPoliigon: http://www.poliigon.com\n\nMusic license ID JFTPWZDFYLB752M4", "How to Texture in Blender - Full Course", "26492b1b-9d11-442a-b544-c77f8b5146d5", "https://www.youtube.com/watch?v=uHCJoNEWjXo", "uHCJoNEWjXo", false, 6790, false, 13, "/downloads/Blender Guru/2024-07-26 How to Texture in Blender - Full Course/How to Texture in Blender - Full Course [uHCJoNEWjXo].mp4", false, false, 10, [], 98, ~U[2024-07-26 20:58:38Z], ~U[2025-12-23 21:16:22Z], ~U[2025-12-23 21:16:22Z], "A full tutorial course on the fundamentals of texturing and shaders in Blender. Learn how to make a grungy brick wall for realistic environments.\n\nWhat you'll learn:\n0:00 Shader Fundamentals\n5:50 Procedural Textures\n09:05 Image Textures\n13:20 The Importance of PBR Textures\n17:09 UV Unwrapping\n20:22 PBR Texture Setup\n29:55 You're wrong about bumps!\n40:20 Node Wrangler Addon\n43:16 Poliigon Addon\n45:30 Adjusting a texture\n50:22 Breaking up repetition\n1:03:20 Image texture painting\n1:06:54 Vertex Painting\n1:12:12 The \"Color Burn Technique\"\n1:22:23 Using Decals\n1:29:36 Wet leak patterns\n1:36:40 A challenge\n1:38:06 Efflorescence effect\n1:40:50 Desaturation effect\n1:44:33 Spalling effect\n1:51:22 The final node setup\n\n===Links🔗===\n-Join the waitlist for my upcoming Blender course: https://blender-guru.mykajabi.com/opt-in\nFree Brick Texture: https://www.poliigon.com/texture/dutch-bond-reclaimed-brick-texture-dull-brown/8320?utm_campaign=texturingbasics&utm_source=youtube&utm_medium=bg\n\n-Poliigon Addon: https://www.poliigon.com/blender?utm_campaign=texturingbasics&utm_source=youtube&utm_medium=bg\n\n-Graffiti Texture: https://drive.google.com/file/d/17edzCP56HMX8731HAACz6Dh-Bmxzuw1a/view?usp=drive_link\n\n-Abandoned Brick reference: https://www.flickr.com/photos/slworking/4664255917/\n\n-White Efflorescence references: https://www.alamy.com/the-old-abandoned-unfinished-brick-building-close-up-image214317155.html?imageid=F4D792C6-FF04-48A3-BBA1-554C9EA4F066&p=282969&pn=3&searchId=3cf46225d0dab2cfe6cbf6f01607d032&searchtype=0 \nhttps://unsplash.com/photos/brown-bricked-wall-f4_1ZqzokZI\n\n-Scale Reference Man model (cc0): https://drive.google.com/file/d/149WEThtRHrslWbHeddzAGXmlBf8RWkpC/view?usp=drive_link\n\n===Animation Credits===\nConcept & Layout - One Pixel Brush (https://onepixelbrush.com/)\nScene Polish & Camera Animation - Pawel Pecherzewski\nShader - Andrew Price\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: http://www.linkedin.com/in/andrew-price-17678911\nPoliigon: http://www.poliigon.com\n\nMusic license ID JFTPWZDFYLB752M4", "How to Texture in Blender - Full Course", "https://www.youtube.com/watch?v=uHCJoNEWjXo", "uHCJoNEWjXo", 6790, false, "/downloads/Blender Guru/2024-07-26 How to Texture in Blender - Full Course/How to Texture in Blender - Full Course [uHCJoNEWjXo].mp4", false, 10, ~U[2024-07-26 20:58:38Z]] 21:16:22.950 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [10] 21:16:22.950 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 21:16:22.951 [debug] QUERY OK source="media_items" db=0.2ms 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 [24154] 21:16:22.951 [debug] Current batch of media processed. Will check again in 1000ms 21:16:23.952 [debug] Current batch of media processed. Will check again in 1000ms 21:16:24.953 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nThe complete beginner blender donut tutorial course in one video for those who prefer it over the multipart series.\n\nWatch it in parts: https://www.youtube.com/playlist?list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z\n\n===Links🔗===\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nDonate to Blender: https://fund.blender.org/\n\nPoliigon Blender Addon: https://www.poliigon.com/blender?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\nMarble Texture on Poliigon: https://www.poliigon.com/texture/denali-quartzite-texture-gray/8060?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\nPlate model: https://www.poliigon.com/model/ceramic-plate-model-white-with-dark-specks/8110?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\nUtensils model: https://www.poliigon.com/model/wooden-utensils-jar-model/3441?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\n\nUpcoming Blender Course: https://blender-guru.mykajabi.com/opt-in\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\n\n=== Chapter Marks (separated by paragraph spaces for each part)✂️===\n00:00 Intro\n01:10 Download and Install\n02:15 Interface & Navigation\n05:09 Render Mode & Panning\n06:33 Moving objects and camera & making a render\n12:42 Change the material\n15:16 Scale & Rotation\n\n17:52 Add the Torus\n22:26 Subdivision modifier\n29:38 Proportional editing\n31:29 Deforming the donut\n32:56 Shrinking the circumference\n\n36:30 Duplicate an object\n38:25 Name objects\n41:36 The solidify modifier & Snap to Face\n45:16 Apply the subsurf modifier\n49:35 Make the edge wavy and round\n53:51 Extrusion\n\n57:08 Technical check\n58:18 Shrinkwrap modifier\n1:01:14 Applying thickness\n1:05:49 Inflate, Grab, & Mask brushes\n1:12:46 Filter & Smooth brushes\n\n1:18:51 Creating the countertop\n1:19:24 Parenting objects\n1:21:02 Countertop texture\n1:24:34 Material nodes, Roughness map, & normal map\n1:31:49 Texture Painting\n\n1:37:36 Geometry Nodes\n1:40:56 Scattering points\n1:42:31 Make a round sprinkle & Poisson Disk\n1:46:56 Weight painting\n1:54:55 Accurate real-world size\n1:58:10 Fix the sprinkle density\n\n2:02:53 The cylinder\n2:04:11 Model the sprinkle\n2:07:37 Sprinkle variants\n2:11:04 Organize with Collections\n2:15:26 Scattering an entire collection & changing the sprinkle rotation\n2:18:21 Rotation Euler & random rotation\n2:23:04 Distance and sizing\n\n2:26:26 Apply materials to multiple objects\n2:27:38 Generate random values per materials\n2:31:14 Metallic sprinkles\n2:35:35 Fly navigation\n2:37:36 Render engines\n2:43:43 Computer too slow?\n2:45:53 Reset the lamp location\n2:47:12 Subsurface Scattering (SSS)\n\n2:54:18 Image reference & modelling the plate\n3:04:49 Stack the donuts\n3:10:28 Assign sprinkles\n3:11:22 Trackball rotation\n3:12:10 Scale the countertop and making the backsplash\n3:13:31 Icing colors\n3:16:34 Creating a ceramic plate material\n\n3:18:43 Sky Texture\n3:21:03 Kitchen enclosure\n3:23:24 Snapping feature and removing unneeded faces\n3:26:39 The window\n3:27:31 Shaping the light and tweaking the sun intensity\n3:31:48 Import a model\n3:33:45 Install an addon\n\n3:36:05 Lighting fixes\n3:39:26 Intro to compositor\n3:43:11 Color management \"Looks\" & AgX\n3:45:18 Creating glare\n3:51:08 Realtime compositing\n3:54:51 Lens Distortion & Chromatic Aberration\n\n3:58:00 Keyframe basics\n4:00:18 Adding a pivot object\n4:01:23 Parenting to the empty\n4:02:11 Create rotation keyframes\n4:04:39 The Dope Sheet & The Graph Editor\n4:06:35 Changing the keyframe ease\n4:08:09 Keyframing the scale\n4:09:47 Normalizing the Graph Editor\n4:11:51 Frames per second\n\n4:14:20 Choosing the sample count\n4:17:12 Noise thresh" <> ..., "duration" => 17704, "filename" => "/downloads/Blender Guru/2024-07-25 Beginner Blender 4.0 Tutorial (2023)/Beginner Blender 4.0 Tutorial (2023) [4haAdmHqGOw].mp4", "id" => "4haAdmHqGOw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=4haAdmHqGOw", "playlist_index" => 14, "timestamp" => 1721941904, "title" => "Beginner Blender 4.0 Tutorial (2023)", "upload_date" => "20240725"} 21:16:24.954 [debug] QUERY OK source="sources" db=0.2ms idle=946.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [10] 21:16:24.960 [debug] QUERY OK source="sources" db=6.5ms idle=946.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:24.961 [debug] QUERY OK source="media_items" db=0.6ms idle=953.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2024-07-25 21:11:44Z], 10] 21:16:24.964 [debug] QUERY OK source="media_items" db=1.9ms idle=954.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nThe complete beginner blender donut tutorial course in one video for those who prefer it over the multipart series.\n\nWatch it in parts: https://www.youtube.com/playlist?list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z\n\n===Links🔗===\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nDonate to Blender: https://fund.blender.org/\n\nPoliigon Blender Addon: https://www.poliigon.com/blender?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\nMarble Texture on Poliigon: https://www.poliigon.com/texture/denali-quartzite-texture-gray/8060?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\nPlate model: https://www.poliigon.com/model/ceramic-plate-model-white-with-dark-specks/8110?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\nUtensils model: https://www.poliigon.com/model/wooden-utensils-jar-model/3441?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\n\nUpcoming Blender Course: https://blender-guru.mykajabi.com/opt-in\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\n\n=== Chapter Marks (separated by paragraph spaces for each part)✂️===\n00:00 Intro\n01:10 Download and Install\n02:15 Interface & Navigation\n05:09 Render Mode & Panning\n06:33 Moving objects and camera & making a render\n12:42 Change the material\n15:16 Scale & Rotation\n\n17:52 Add the Torus\n22:26 Subdivision modifier\n29:38 Proportional editing\n31:29 Deforming the donut\n32:56 Shrinking the circumference\n\n36:30 Duplicate an object\n38:25 Name objects\n41:36 The solidify modifier & Snap to Face\n45:16 Apply the subsurf modifier\n49:35 Make the edge wavy and round\n53:51 Extrusion\n\n57:08 Technical check\n58:18 Shrinkwrap modifier\n1:01:14 Applying thickness\n1:05:49 Inflate, Grab, & Mask brushes\n1:12:46 Filter & Smooth brushes\n\n1:18:51 Creating the countertop\n1:19:24 Parenting objects\n1:21:02 Countertop texture\n1:24:34 Material nodes, Roughness map, & normal map\n1:31:49 Texture Painting\n\n1:37:36 Geometry Nodes\n1:40:56 Scattering points\n1:42:31 Make a round sprinkle & Poisson Disk\n1:46:56 Weight painting\n1:54:55 Accurate real-world size\n1:58:10 Fix the sprinkle density\n\n2:02:53 The cylinder\n2:04:11 Model the sprinkle\n2:07:37 Sprinkle variants\n2:11:04 Organize with Collections\n2:15:26 Scattering an entire collection & changing the sprinkle rotation\n2:18:21 Rotation Euler & random rotation\n2:23:04 Distance and sizing\n\n2:26:26 Apply materials to multiple objects\n2:27:38 Generate random values per materials\n2:31:14 Metallic sprinkles\n2:35:35 Fly navigation\n2:37:36 Render engines\n2:43:43 Computer too slow?\n2:45:53 Reset the lamp location\n2:47:12 Subsurface Scattering (SSS)\n\n2:54:18 Image reference & modelling the plate\n3:04:49 Stack the donuts\n3:10:28 Assign sprinkles\n3:11:22 Trackball rotation\n3:12:10 Scale the countertop and making the backsplash\n3:13:31 Icing colors\n3:16:34 Creating a ceramic plate material\n\n3:18:43 Sky Texture\n3:21:03 Kitchen enclosure\n3:23:24 Snapping feature and removing unneeded faces\n3:26:39 The window\n3:27:31 Shaping the light and tweaking the sun intensity\n3:31:48 Import a model\n3:33:45 Install an addon\n\n3:36:05 Lighting fixes\n3:39:26 Intro to compositor\n3:43:11 Color management \"Looks\" & AgX\n3:45:18 Creating glare\n3:51:08 Realtime compositing\n3:54:51 Lens Distortion & Chromatic Aberration\n\n3:58:00 Keyframe basics\n4:00:18 Adding a pivot object\n4:01:23 Parenting to the empty\n4:02:11 Create rotation keyframes\n4:04:39 The Dope Sheet & The Graph Editor\n4:06:35 Changing the keyframe ease\n4:08:09 Keyframing the scale\n4:09:47 Normalizing the Graph Editor\n4:11:51 Frames per second\n\n4:14:20 Choosing the sample count\n4:17:12 Noise thresh" <> ..., "Beginner Blender 4.0 Tutorial (2023)", "248bdef5-d709-4ab0-aab3-bdcc62f80e99", "https://www.youtube.com/watch?v=4haAdmHqGOw", "4haAdmHqGOw", false, 17704, false, 14, "/downloads/Blender Guru/2024-07-25 Beginner Blender 4.0 Tutorial (2023)/Beginner Blender 4.0 Tutorial (2023) [4haAdmHqGOw].mp4", false, false, 10, [], 98, ~U[2024-07-25 21:11:44Z], ~U[2025-12-23 21:16:24Z], ~U[2025-12-23 21:16:24Z], "Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nThe complete beginner blender donut tutorial course in one video for those who prefer it over the multipart series.\n\nWatch it in parts: https://www.youtube.com/playlist?list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z\n\n===Links🔗===\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nDonate to Blender: https://fund.blender.org/\n\nPoliigon Blender Addon: https://www.poliigon.com/blender?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\nMarble Texture on Poliigon: https://www.poliigon.com/texture/denali-quartzite-texture-gray/8060?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\nPlate model: https://www.poliigon.com/model/ceramic-plate-model-white-with-dark-specks/8110?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\nUtensils model: https://www.poliigon.com/model/wooden-utensils-jar-model/3441?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\n\nUpcoming Blender Course: https://blender-guru.mykajabi.com/opt-in\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\n\n=== Chapter Marks (separated by paragraph spaces for each part)✂️===\n00:00 Intro\n01:10 Download and Install\n02:15 Interface & Navigation\n05:09 Render Mode & Panning\n06:33 Moving objects and camera & making a render\n12:42 Change the material\n15:16 Scale & Rotation\n\n17:52 Add the Torus\n22:26 Subdivision modifier\n29:38 Proportional editing\n31:29 Deforming the donut\n32:56 Shrinking the circumference\n\n36:30 Duplicate an object\n38:25 Name objects\n41:36 The solidify modifier & Snap to Face\n45:16 Apply the subsurf modifier\n49:35 Make the edge wavy and round\n53:51 Extrusion\n\n57:08 Technical check\n58:18 Shrinkwrap modifier\n1:01:14 Applying thickness\n1:05:49 Inflate, Grab, & Mask brushes\n1:12:46 Filter & Smooth brushes\n\n1:18:51 Creating the countertop\n1:19:24 Parenting objects\n1:21:02 Countertop texture\n1:24:34 Material nodes, Roughness map, & normal map\n1:31:49 Texture Painting\n\n1:37:36 Geometry Nodes\n1:40:56 Scattering points\n1:42:31 Make a round sprinkle & Poisson Disk\n1:46:56 Weight painting\n1:54:55 Accurate real-world size\n1:58:10 Fix the sprinkle density\n\n2:02:53 The cylinder\n2:04:11 Model the sprinkle\n2:07:37 Sprinkle variant (truncated) 21:16:24.964 [debug] QUERY OK source="sources" db=0.1ms idle=61.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:24.965 [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] 21:16:24.965 [debug] QUERY OK source="media_items" db=0.2ms 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 [24156] 21:16:24.965 [debug] Current batch of media processed. Will check again in 1000ms 21:16:25.966 [debug] Current batch of media processed. Will check again in 1000ms 21:16:26.967 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nLet's finish this bad boy 🍩 Join the waitlist for my upcoming Blender course: https://blender-guru.mykajabi.com/opt-in\n\nIn this final part of the series, you'll learn how to turn your image sequence into a video using Blender's video sequencer. Plus a donut challenge!\n\n===Links🔗===\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:24 Blender for Beginners Course \n1:26 Editing in Premiere\n2:04 Video Editing in Blender\n2:42 Loading an image sequence\n3:58 Holding the last frame\n4:42 Fading to black\n6:04 Exporting the final video\n9:32 Donut variation challenge!\n\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://www.linkedin.com/in/andrew-price-17678911\nArtStation: http://artstation.com/artist/andrewprice", "duration" => 651, "filename" => "/downloads/Blender Guru/2023-12-07 Beginner Blender 4.0 Tutorial - Part 14: Finale!/Beginner Blender 4.0 Tutorial - Part 14: Finale! [xkt4HEEgoSE].mp4", "id" => "xkt4HEEgoSE", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=xkt4HEEgoSE", "playlist_index" => 15, "timestamp" => 1701933622, "title" => "Beginner Blender 4.0 Tutorial - Part 14: Finale!", "upload_date" => "20231207"} 21:16:26.968 [debug] QUERY OK source="sources" db=0.1ms idle=960.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [10] 21:16:26.968 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=960.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:26.969 [debug] QUERY OK source="media_items" db=0.5ms idle=961.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2023-12-07 07:20:22Z], 10] 21:16:26.970 [debug] QUERY OK source="media_items" db=1.0ms idle=962.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nLet's finish this bad boy 🍩 Join the waitlist for my upcoming Blender course: https://blender-guru.mykajabi.com/opt-in\n\nIn this final part of the series, you'll learn how to turn your image sequence into a video using Blender's video sequencer. Plus a donut challenge!\n\n===Links🔗===\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:24 Blender for Beginners Course \n1:26 Editing in Premiere\n2:04 Video Editing in Blender\n2:42 Loading an image sequence\n3:58 Holding the last frame\n4:42 Fading to black\n6:04 Exporting the final video\n9:32 Donut variation challenge!\n\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://www.linkedin.com/in/andrew-price-17678911\nArtStation: http://artstation.com/artist/andrewprice", "Beginner Blender 4.0 Tutorial - Part 14: Finale!", "032a73bd-f665-48a0-badb-b2c74b797d3a", "https://www.youtube.com/watch?v=xkt4HEEgoSE", "xkt4HEEgoSE", false, 651, false, 15, "/downloads/Blender Guru/2023-12-07 Beginner Blender 4.0 Tutorial - Part 14: Finale!/Beginner Blender 4.0 Tutorial - Part 14: Finale! [xkt4HEEgoSE].mp4", false, false, 10, [], 98, ~U[2023-12-07 07:20:22Z], ~U[2025-12-23 21:16:26Z], ~U[2025-12-23 21:16:26Z], "This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nLet's finish this bad boy 🍩 Join the waitlist for my upcoming Blender course: https://blender-guru.mykajabi.com/opt-in\n\nIn this final part of the series, you'll learn how to turn your image sequence into a video using Blender's video sequencer. Plus a donut challenge!\n\n===Links🔗===\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:24 Blender for Beginners Course \n1:26 Editing in Premiere\n2:04 Video Editing in Blender\n2:42 Loading an image sequence\n3:58 Holding the last frame\n4:42 Fading to black\n6:04 Exporting the final video\n9:32 Donut variation challenge!\n\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://www.linkedin.com/in/andrew-price-17678911\nArtStation: http://artstation.com/artist/andrewprice", "Beginner Blender 4.0 Tutorial - Part 14: Finale!", "https://www.youtube.com/watch?v=xkt4HEEgoSE", "xkt4HEEgoSE", 651, false, "/downloads/Blender Guru/2023-12-07 Beginner Blender 4.0 Tutorial - Part 14: Finale!/Beginner Blender 4.0 Tutorial - Part 14: Finale! [xkt4HEEgoSE].mp4", false, 10, ~U[2023-12-07 07:20:22Z]] 21:16:26.971 [debug] QUERY OK source="sources" db=0.2ms idle=63.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:26.971 [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] 21:16:26.972 [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 [24158] 21:16:26.972 [debug] Current batch of media processed. Will check again in 1000ms 21:16:27.973 [debug] Current batch of media processed. Will check again in 1000ms 21:16:28.974 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nTime to finally render that 🍩 Watch Part 14: https://www.youtube.com/watch?v=xkt4HEEgoSE&list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z&index=15\n\nIn this video you'll discover how to determine the correct sample count, rendering to a still image sequence, and undergoing a Pre-Rendering Checklist.\n\n===Links🔗===\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 Choosing the sample count\n2:52 Noise threshold\n3:40 Time limit\n4:02 Rendering to a still image sequence\n7:14 Pre-Rendering Checklist Time!\n7:40 Face orientation check\n9:08 Unwanted object check\n9:58 Intersection check\n10:14 Improving the composition\n12:53 Improving the lighting\n14:46 Exposure check\n16:18 Color check\n17:09 Adding SSS to the donut\n17:43 Improving the sprinkles\n20:17 Adding Big Medium Small details\n22:42 Improving the Sky lighting\n23:14 Adding Depth of Field\n24:42 Adding Motion Blur\n25:06 Fixing final problems \n\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://facebook.com/blenderguru\nhttps://www.linkedin.com/in/andrew-price-17678911/\nArtStation: https://artstation.com/artist/andrewprice", "duration" => 1793, "filename" => "/downloads/Blender Guru/2023-12-06 Beginner Blender 4.0 Tutorial - Part 13: Rendering/Beginner Blender 4.0 Tutorial - Part 13: Rendering [fSfFkh2sI4k].mp4", "id" => "fSfFkh2sI4k", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=fSfFkh2sI4k", "playlist_index" => 16, "timestamp" => 1701846430, "title" => "Beginner Blender 4.0 Tutorial - Part 13: Rendering", "upload_date" => "20231206"} 21:16:28.975 [debug] QUERY OK source="sources" db=0.3ms queue=0.2ms idle=967.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 (?)) [10] 21:16:28.976 [debug] QUERY OK source="sources" db=0.2ms idle=968.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:28.977 [debug] QUERY OK source="media_items" db=0.6ms idle=968.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2023-12-06 07:07:10Z], 10] 21:16:28.978 [debug] QUERY OK source="media_items" db=1.0ms idle=969.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nTime to finally render that 🍩 Watch Part 14: https://www.youtube.com/watch?v=xkt4HEEgoSE&list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z&index=15\n\nIn this video you'll discover how to determine the correct sample count, rendering to a still image sequence, and undergoing a Pre-Rendering Checklist.\n\n===Links🔗===\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 Choosing the sample count\n2:52 Noise threshold\n3:40 Time limit\n4:02 Rendering to a still image sequence\n7:14 Pre-Rendering Checklist Time!\n7:40 Face orientation check\n9:08 Unwanted object check\n9:58 Intersection check\n10:14 Improving the composition\n12:53 Improving the lighting\n14:46 Exposure check\n16:18 Color check\n17:09 Adding SSS to the donut\n17:43 Improving the sprinkles\n20:17 Adding Big Medium Small details\n22:42 Improving the Sky lighting\n23:14 Adding Depth of Field\n24:42 Adding Motion Blur\n25:06 Fixing final problems \n\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://facebook.com/blenderguru\nhttps://www.linkedin.com/in/andrew-price-17678911/\nArtStation: https://artstation.com/artist/andrewprice", "Beginner Blender 4.0 Tutorial - Part 13: Rendering", "585eafb6-f321-4ddd-91ab-eb7a0981f1db", "https://www.youtube.com/watch?v=fSfFkh2sI4k", "fSfFkh2sI4k", false, 1793, false, 16, "/downloads/Blender Guru/2023-12-06 Beginner Blender 4.0 Tutorial - Part 13: Rendering/Beginner Blender 4.0 Tutorial - Part 13: Rendering [fSfFkh2sI4k].mp4", false, false, 10, [], 98, ~U[2023-12-06 07:07:10Z], ~U[2025-12-23 21:16:28Z], ~U[2025-12-23 21:16:28Z], "This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nTime to finally render that 🍩 Watch Part 14: https://www.youtube.com/watch?v=xkt4HEEgoSE&list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z&index=15\n\nIn this video you'll discover how to determine the correct sample count, rendering to a still image sequence, and undergoing a Pre-Rendering Checklist.\n\n===Links🔗===\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 Choosing the sample count\n2:52 Noise threshold\n3:40 Time limit\n4:02 Rendering to a still image sequence\n7:14 Pre-Rendering Checklist Time!\n7:40 Face orientation check\n9:08 Unwanted object check\n9:58 Intersection check\n10:14 Improving the composition\n12:53 Improving the lighting\n14:46 Exposure check\n16:18 Color check\n17:09 Adding SSS to the donut\n17:43 Improving the sprinkles\n20:17 Adding Big Medium Small details\n22:42 Improving the Sky lighting\n23:14 Adding Depth of Field\n24:42 Adding Motion Blur\n25:06 Fixing final problems \n\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://facebook.com/blenderguru\nhttps://www.linkedin.com/in/andrew-price-17678911/\nArtStation: https://artstation.com/artist/andrewprice", "Beginner Blender 4.0 Tutorial - Part 13: Rendering", "https://www.youtube.com/watch?v=fSfFkh2sI4k", "fSfFkh2sI4k", 1793, false, "/downloads/Blender Guru/2023-12-06 Beginner Blender 4.0 Tutorial - Part 13: Rendering/Beginner Blender 4.0 Tutorial - Part 13: Rendering [fSfFkh2sI4k].mp4", false, 10, ~U[2023-12-06 07:07:10Z]] 21:16:28.979 [debug] QUERY OK source="sources" db=0.1ms idle=66.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:28.979 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=3.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 21:16:28.980 [debug] QUERY OK source="media_items" db=0.2ms 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 [24160] 21:16:28.980 [debug] Current batch of media processed. Will check again in 1000ms 21:16:29.981 [debug] Current batch of media processed. Will check again in 1000ms 21:16:30.982 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nLet's animate that donut 🍩 Watch Part 13: https://www.youtube.com/watch?v=fSfFkh2sI4k&list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z&index=14\n\nIn this video you'll learn the basics of animation in Blender: placing keyframes, easing the interpolation, the dope sheet, the graph editor, frame rates and more.\n\n===Links🔗===\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 The basics of keyframing\n2:18 Adding a pivot object\n3:23 Parenting to the empty\n4:11 Creating rotation keyframes\n6:39 The Dope Sheet\n7:32 The Graph Editor\n8:35 Changing the keyframe ease\n10:09 Keyframing the scale \n11:47 Normalizing the Graph Editor\n13:51 Frames per second\n15:20 Setting an End Frame\n\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://www.linkedin.com/in/andrew-price-17678911\nArtStation: https://artstation.com/artist/andrewprice", "duration" => 981, "filename" => "/downloads/Blender Guru/2023-12-05 Beginner Blender 4.0 Tutorial - Part 12: Animation/Beginner Blender 4.0 Tutorial - Part 12: Animation [4-tCn4-GfM4].mp4", "id" => "4-tCn4-GfM4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=4-tCn4-GfM4", "playlist_index" => 17, "timestamp" => 1701759601, "title" => "Beginner Blender 4.0 Tutorial - Part 12: Animation", "upload_date" => "20231205"} 21:16:30.983 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=975.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [10] 21:16:30.984 [debug] QUERY OK source="sources" db=0.2ms idle=976.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:30.985 [debug] QUERY OK source="media_items" db=0.6ms idle=976.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2023-12-05 07:00:01Z], 10] 21:16:30.986 [debug] QUERY OK source="media_items" db=1.0ms idle=977.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nLet's animate that donut 🍩 Watch Part 13: https://www.youtube.com/watch?v=fSfFkh2sI4k&list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z&index=14\n\nIn this video you'll learn the basics of animation in Blender: placing keyframes, easing the interpolation, the dope sheet, the graph editor, frame rates and more.\n\n===Links🔗===\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 The basics of keyframing\n2:18 Adding a pivot object\n3:23 Parenting to the empty\n4:11 Creating rotation keyframes\n6:39 The Dope Sheet\n7:32 The Graph Editor\n8:35 Changing the keyframe ease\n10:09 Keyframing the scale \n11:47 Normalizing the Graph Editor\n13:51 Frames per second\n15:20 Setting an End Frame\n\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://www.linkedin.com/in/andrew-price-17678911\nArtStation: https://artstation.com/artist/andrewprice", "Beginner Blender 4.0 Tutorial - Part 12: Animation", "fce17ff9-8db5-41bf-b3b0-770cd74e88cd", "https://www.youtube.com/watch?v=4-tCn4-GfM4", "4-tCn4-GfM4", false, 981, false, 17, "/downloads/Blender Guru/2023-12-05 Beginner Blender 4.0 Tutorial - Part 12: Animation/Beginner Blender 4.0 Tutorial - Part 12: Animation [4-tCn4-GfM4].mp4", false, false, 10, [], 98, ~U[2023-12-05 07:00:01Z], ~U[2025-12-23 21:16:30Z], ~U[2025-12-23 21:16:30Z], "This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nLet's animate that donut 🍩 Watch Part 13: https://www.youtube.com/watch?v=fSfFkh2sI4k&list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z&index=14\n\nIn this video you'll learn the basics of animation in Blender: placing keyframes, easing the interpolation, the dope sheet, the graph editor, frame rates and more.\n\n===Links🔗===\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 The basics of keyframing\n2:18 Adding a pivot object\n3:23 Parenting to the empty\n4:11 Creating rotation keyframes\n6:39 The Dope Sheet\n7:32 The Graph Editor\n8:35 Changing the keyframe ease\n10:09 Keyframing the scale \n11:47 Normalizing the Graph Editor\n13:51 Frames per second\n15:20 Setting an End Frame\n\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://www.linkedin.com/in/andrew-price-17678911\nArtStation: https://artstation.com/artist/andrewprice", "Beginner Blender 4.0 Tutorial - Part 12: Animation", "https://www.youtube.com/watch?v=4-tCn4-GfM4", "4-tCn4-GfM4", 981, false, "/downloads/Blender Guru/2023-12-05 Beginner Blender 4.0 Tutorial - Part 12: Animation/Beginner Blender 4.0 Tutorial - Part 12: Animation [4-tCn4-GfM4].mp4", false, 10, ~U[2023-12-05 07:00:01Z]] 21:16:30.986 [debug] QUERY OK source="sources" db=0.1ms idle=70.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:30.987 [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] 21:16:30.987 [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 [24162] 21:16:30.987 [debug] Current batch of media processed. Will check again in 1000ms 21:16:31.989 [debug] Current batch of media processed. Will check again in 1000ms 21:16:32.990 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nLet's make our donut shine ✨🍩 Watch Part 12: https://www.youtube.com/watch?v=4-tCn4-GfM4&list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z&index=13\n\nIn this video you'll learn about the compositor, how to create glare, lens distortion and realtime compositing.\n\n===Links🔗===\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 Lighting fixes \n3:21 Introduction to the compositor\n7:06 Color management \"Looks\"\n8:04 AgX\n9:13 Creating glare\n15:03 Realtime compositing\n18:46 Lens Distortion\n19:58 Chromatic Aberration\n21:14 Final node setup\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://www.linkedin.com/in/andrew-price-17678911\nArtStation: https://artstation.com/artist/andrewprice", "duration" => 1315, "filename" => "/downloads/Blender Guru/2023-11-26 Beginner Blender 4.0 Tutorial - Part 11: Compositing/Beginner Blender 4.0 Tutorial - Part 11: Compositing [nxrEV-OUTEg].mp4", "id" => "nxrEV-OUTEg", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=nxrEV-OUTEg", "playlist_index" => 18, "timestamp" => 1700982020, "title" => "Beginner Blender 4.0 Tutorial - Part 11: Compositing", "upload_date" => "20231126"} 21:16:32.991 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=983.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [10] 21:16:32.991 [debug] QUERY OK source="sources" db=0.2ms idle=983.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:32.992 [debug] QUERY OK source="media_items" db=0.7ms idle=984.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2023-11-26 07:00:20Z], 10] 21:16:32.994 [debug] QUERY OK source="media_items" db=1.0ms idle=985.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nLet's make our donut shine ✨🍩 Watch Part 12: https://www.youtube.com/watch?v=4-tCn4-GfM4&list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z&index=13\n\nIn this video you'll learn about the compositor, how to create glare, lens distortion and realtime compositing.\n\n===Links🔗===\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 Lighting fixes \n3:21 Introduction to the compositor\n7:06 Color management \"Looks\"\n8:04 AgX\n9:13 Creating glare\n15:03 Realtime compositing\n18:46 Lens Distortion\n19:58 Chromatic Aberration\n21:14 Final node setup\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://www.linkedin.com/in/andrew-price-17678911\nArtStation: https://artstation.com/artist/andrewprice", "Beginner Blender 4.0 Tutorial - Part 11: Compositing", "b4d3fd38-91c8-4586-be9f-33404ee87400", "https://www.youtube.com/watch?v=nxrEV-OUTEg", "nxrEV-OUTEg", false, 1315, false, 18, "/downloads/Blender Guru/2023-11-26 Beginner Blender 4.0 Tutorial - Part 11: Compositing/Beginner Blender 4.0 Tutorial - Part 11: Compositing [nxrEV-OUTEg].mp4", false, false, 10, [], 98, ~U[2023-11-26 07:00:20Z], ~U[2025-12-23 21:16:32Z], ~U[2025-12-23 21:16:32Z], "This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nLet's make our donut shine ✨🍩 Watch Part 12: https://www.youtube.com/watch?v=4-tCn4-GfM4&list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z&index=13\n\nIn this video you'll learn about the compositor, how to create glare, lens distortion and realtime compositing.\n\n===Links🔗===\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 Lighting fixes \n3:21 Introduction to the compositor\n7:06 Color management \"Looks\"\n8:04 AgX\n9:13 Creating glare\n15:03 Realtime compositing\n18:46 Lens Distortion\n19:58 Chromatic Aberration\n21:14 Final node setup\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://www.linkedin.com/in/andrew-price-17678911\nArtStation: https://artstation.com/artist/andrewprice", "Beginner Blender 4.0 Tutorial - Part 11: Compositing", "https://www.youtube.com/watch?v=nxrEV-OUTEg", "nxrEV-OUTEg", 1315, false, "/downloads/Blender Guru/2023-11-26 Beginner Blender 4.0 Tutorial - Part 11: Compositing/Beginner Blender 4.0 Tutorial - Part 11: Compositing [nxrEV-OUTEg].mp4", false, 10, ~U[2023-11-26 07:00:20Z]] 21:16:32.994 [debug] QUERY OK source="sources" db=0.2ms idle=74.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" = ?) [10] 21:16:32.995 [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] 21:16:32.995 [debug] QUERY OK source="media_items" db=0.2ms 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 [24164] 21:16:32.996 [debug] Current batch of media processed. Will check again in 1000ms 21:16:33.996 [debug] Current batch of media processed. Will check again in 1000ms 21:16:34.997 [debug] Current batch of media processed. Will check again in 1000ms 21:16:35.998 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nLet's light that donut 🍩 Part 11: https://www.youtube.com/watch?v=nxrEV-OUTEg&list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z&index=12\n\nIn this video you'll learn about the sun texture light system, snapping, importing models and installing addons.\n\n===Links🔗===\n\nUtensils model: https://www.poliigon.com/model/wooden-utensils-jar-model/3441?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\n\nPoliigon Blender Addon: https://www.poliigon.com/blender?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:57 Using Sky Texture\n3:17 Creating the kitchen enclosure\n5:38 Using the new snapping feature\n8:06 Removing the unneeded faces\n8:53 Creating the window\n9:45 Shaping the light\n10:48 \"Negative\" light\n13:03 Tweaking sun intensity\n14:02 How to import a model\n15:59 Installing an addon\n\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://www.linkedin.com/in/andrew-price-17678911\nArtStation: https://artstation.com/artist/andrewprice", "duration" => 1099, "filename" => "/downloads/Blender Guru/2023-11-25 Beginner Blender 4.0 Tutorial - Part 10: Lighting/Beginner Blender 4.0 Tutorial - Part 10: Lighting [KO29y5eW61g].mp4", "id" => "KO29y5eW61g", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=KO29y5eW61g", "playlist_index" => 19, "timestamp" => 1700895611, "title" => "Beginner Blender 4.0 Tutorial - Part 10: Lighting", "upload_date" => "20231125"} 21:16:35.999 [debug] QUERY OK source="sources" db=0.2ms idle=1991.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [10] 21:16:36.000 [debug] QUERY OK source="sources" db=0.1ms idle=1992.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:36.001 [debug] QUERY OK source="media_items" db=0.7ms idle=1992.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2023-11-25 07:00:11Z], 10] 21:16:36.002 [debug] QUERY OK source="media_items" db=1.2ms idle=1076.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nLet's light that donut 🍩 Part 11: https://www.youtube.com/watch?v=nxrEV-OUTEg&list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z&index=12\n\nIn this video you'll learn about the sun texture light system, snapping, importing models and installing addons.\n\n===Links🔗===\n\nUtensils model: https://www.poliigon.com/model/wooden-utensils-jar-model/3441?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\n\nPoliigon Blender Addon: https://www.poliigon.com/blender?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:57 Using Sky Texture\n3:17 Creating the kitchen enclosure\n5:38 Using the new snapping feature\n8:06 Removing the unneeded faces\n8:53 Creating the window\n9:45 Shaping the light\n10:48 \"Negative\" light\n13:03 Tweaking sun intensity\n14:02 How to import a model\n15:59 Installing an addon\n\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://www.linkedin.com/in/andrew-price-17678911\nArtStation: https://artstation.com/artist/andrewprice", "Beginner Blender 4.0 Tutorial - Part 10: Lighting", "27d43afd-f624-42af-bbb4-20e87308b080", "https://www.youtube.com/watch?v=KO29y5eW61g", "KO29y5eW61g", false, 1099, false, 19, "/downloads/Blender Guru/2023-11-25 Beginner Blender 4.0 Tutorial - Part 10: Lighting/Beginner Blender 4.0 Tutorial - Part 10: Lighting [KO29y5eW61g].mp4", false, false, 10, [], 98, ~U[2023-11-25 07:00:11Z], ~U[2025-12-23 21:16:36Z], ~U[2025-12-23 21:16:36Z], "This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nLet's light that donut 🍩 Part 11: https://www.youtube.com/watch?v=nxrEV-OUTEg&list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z&index=12\n\nIn this video you'll learn about the sun texture light system, snapping, importing models and installing addons.\n\n===Links🔗===\n\nUtensils model: https://www.poliigon.com/model/wooden-utensils-jar-model/3441?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\n\nPoliigon Blender Addon: https://www.poliigon.com/blender?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:57 Using Sky Texture\n3:17 Creating the kitchen enclosure\n5:38 Using the new snapping feature\n8:06 Removing the unneeded faces\n8:53 Creating the window\n9:45 Shaping the light\n10:48 \"Negative\" light\n13:03 Tweaking sun intensity\n14:02 How to import a model\n15:59 Installing an addon\n\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://www.linkedin.com/in/andrew-price-17678911\nArtStation: https://artstation.com/artist/andrewprice", "Beginner Blender 4.0 Tutorial - Part 10: Lighting", "https://www.youtube.com/watch?v=KO29y5eW61g", "KO29y5eW61g", 1099, false, "/downloads/Blender Guru/2023-11-25 Beginner Blender 4.0 Tutorial - Part 10: Lighting/Beginner Blender 4.0 Tutorial - Part 10: Lighting [KO29y5eW61g].mp4", false, 10, ~U[2023-11-25 07:00:11Z]] 21:16:36.003 [debug] QUERY OK source="sources" db=0.2ms idle=76.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:36.003 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 21:16:36.004 [debug] QUERY OK source="media_items" db=0.2ms 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 [24166] 21:16:36.004 [debug] Current batch of media processed. Will check again in 1000ms 21:16:37.005 [debug] Current batch of media processed. Will check again in 1000ms 21:16:37.272 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@blenderguru/videos --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/Blender Guru/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/58/3a/583a9a5af4d4dc2522ecb5237cbfa30897d18ea68571859f32d386020be72aec.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/a1/f6/a1f6d26c475afbf3d9bb7e5e7b90f1dd770d90404abf95245e7669ecd793d0e1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 101 with: 21:16:37.273 [debug] Gracefully stopping file follower 21:16:37.273 [debug] QUERY OK source="sources" db=0.3ms idle=344.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [10] 21:16:37.273 [debug] QUERY OK source="sources" db=0.1ms idle=266.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:37.274 [debug] QUERY OK source="media_items" db=0.6ms idle=266.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-07 21:00:38Z], 10] 21:16:37.276 [debug] QUERY OK source="media_items" db=0.9ms idle=267.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Join the Blender Guru Beginners Academy: https://academy.blenderguru.com/join\n\nLet's light and render that donut 🍩\n\nIn this video you'll learn how to add lights for realism, and render in Eevee and Cycles.\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "The Basics of Lighting and Rendering in Blender (Donut Finale)", "8a4140b5-fd62-47e7-a137-9a160c54bf96", "https://www.youtube.com/watch?v=WobATxh3i-g", "WobATxh3i-g", false, 1976, false, 1, "/downloads/Blender Guru/2025-12-07 The Basics of Lighting and Rendering in Blender (Donut Finale)/The Basics of Lighting and Rendering in Blender (Donut Finale) [WobATxh3i-g].mkv", false, false, 10, [], 98, ~U[2025-12-07 21:00:38Z], ~U[2025-12-23 21:16:37Z], ~U[2025-12-23 21:16:37Z], "Join the Blender Guru Beginners Academy: https://academy.blenderguru.com/join\n\nLet's light and render that donut 🍩\n\nIn this video you'll learn how to add lights for realism, and render in Eevee and Cycles.\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "The Basics of Lighting and Rendering in Blender (Donut Finale)", "https://www.youtube.com/watch?v=WobATxh3i-g", "WobATxh3i-g", 1976, false, "/downloads/Blender Guru/2025-12-07 The Basics of Lighting and Rendering in Blender (Donut Finale)/The Basics of Lighting and Rendering in Blender (Donut Finale) [WobATxh3i-g].mkv", false, 10, ~U[2025-12-07 21:00:38Z]] 21:16:37.276 [debug] QUERY OK source="sources" db=0.3ms idle=268.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:37.277 [debug] QUERY OK source="media_items" db=0.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[2025-12-05 20:15:04Z], 10] 21:16:37.278 [debug] QUERY OK source="media_items" db=0.9ms idle=3.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Let's add some sprinkles to that 🍩\nFinal part releasing in two days later\n\nIn this video you'll learn how to use the new scatter on surfaces modifier in Blender 5.0\n\n===Links🔗===\nBlender Guru: https://www.blenderguru.com/tutorials/blender-donut-v5-tutorial\nPoliigon: http://www.poliigon.com High-quality Models, Textures, HDRIs\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:18 Understanding the 3D cursor\n0:51 Modelling the sprinkles\n5:21 Modelling sprinkle variants\n7:23 The new Scatter on Surface Modifier\n12:44 Controlling where it scatters\n18:19 Fixing intersections\n24:04 Randomized colors\n35:16 Wrap up \n\n===Follow me🫰===\n\nTwitter: https://X.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "How to Scatter in Blender 5.0 (Donut Part 7)", "490a01e2-7413-4613-b2e5-634bae214879", "https://www.youtube.com/watch?v=_-QsGTL7pS0", "_-QsGTL7pS0", false, 2204, false, 2, "/downloads/Blender Guru/2025-12-05 How to Scatter in Blender 5.0 (Donut Part 7)/How to Scatter in Blender 5.0 (Donut Part 7) [_-QsGTL7pS0].mkv", false, false, 10, [], 98, ~U[2025-12-05 20:15:04Z], ~U[2025-12-23 21:16:37Z], ~U[2025-12-23 21:16:37Z], "Let's add some sprinkles to that 🍩\nFinal part releasing in two days later\n\nIn this video you'll learn how to use the new scatter on surfaces modifier in Blender 5.0\n\n===Links🔗===\nBlender Guru: https://www.blenderguru.com/tutorials/blender-donut-v5-tutorial\nPoliigon: http://www.poliigon.com High-quality Models, Textures, HDRIs\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:18 Understanding the 3D cursor\n0:51 Modelling the sprinkles\n5:21 Modelling sprinkle variants\n7:23 The new Scatter on Surface Modifier\n12:44 Controlling where it scatters\n18:19 Fixing intersections\n24:04 Randomized colors\n35:16 Wrap up \n\n===Follow me🫰===\n\nTwitter: https://X.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "How to Scatter in Blender 5.0 (Donut Part 7)", "https://www.youtube.com/watch?v=_-QsGTL7pS0", "_-QsGTL7pS0", 2204, false, "/downloads/Blender Guru/2025-12-05 How to Scatter in Blender 5.0 (Donut Part 7)/How to Scatter in Blender 5.0 (Donut Part 7) [_-QsGTL7pS0].mkv", false, 10, ~U[2025-12-05 20:15:04Z]] 21:16:37.279 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [10] 21:16:37.279 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-12-04 18:33:40Z], 10] 21:16:37.281 [debug] QUERY OK source="media_items" db=0.9ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Let's UV unwrap that coffee mug 🍩\nNew parts releasing every other day 🔜\n\nIn this video you'll learn how to UV unwrap a coffee mug, create coffee foam, and more.\n\n===Links🔗===\n\nPoliigon: https://www.poliigon.com/donut\nPoliigon addon: https://www.poliigon.com/blender\nJoin the Blender Guru Beginners Academy: https://academy.blenderguru.com/join\n\n=== Chapter Marks ✂️===\n0:00 Apply base texture\n2:54 Separating handle island\n5:35 UV unwrapping the rest of the mug\n9:12 Creating straight lines\n10:18 Installing the Mio3 UV extension\n12:25 Gridify feature\n13:38 Matching texel density\n18:10 Workflow dependent UVs\n20:09 Improving shader\n21:48 Tweaking a color texture\n25:02 Creating the coffee foam\n33:05 Learn more UV unwrapping\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "Blender Basic UV Unwrapping Tutorial (Donut Part 6)", "189634d2-3130-49ae-9ac9-58215d18f3bb", "https://www.youtube.com/watch?v=yxAqN8TzFbo", "yxAqN8TzFbo", false, 2026, false, 3, "/downloads/Blender Guru/2025-12-04 Blender Basic UV Unwrapping Tutorial (Donut Part 6)/Blender Basic UV Unwrapping Tutorial (Donut Part 6) [yxAqN8TzFbo].mkv", false, false, 10, [], 98, ~U[2025-12-04 18:33:40Z], ~U[2025-12-23 21:16:37Z], ~U[2025-12-23 21:16:37Z], "Let's UV unwrap that coffee mug 🍩\nNew parts releasing every other day 🔜\n\nIn this video you'll learn how to UV unwrap a coffee mug, create coffee foam, and more.\n\n===Links🔗===\n\nPoliigon: https://www.poliigon.com/donut\nPoliigon addon: https://www.poliigon.com/blender\nJoin the Blender Guru Beginners Academy: https://academy.blenderguru.com/join\n\n=== Chapter Marks ✂️===\n0:00 Apply base texture\n2:54 Separating handle island\n5:35 UV unwrapping the rest of the mug\n9:12 Creating straight lines\n10:18 Installing the Mio3 UV extension\n12:25 Gridify feature\n13:38 Matching texel density\n18:10 Workflow dependent UVs\n20:09 Improving shader\n21:48 Tweaking a color texture\n25:02 Creating the coffee foam\n33:05 Learn more UV unwrapping\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "Blender Basic UV Unwrapping Tutorial (Donut Part 6)", "https://www.youtube.com/watch?v=yxAqN8TzFbo", "yxAqN8TzFbo", 2026, false, "/downloads/Blender Guru/2025-12-04 Blender Basic UV Unwrapping Tutorial (Donut Part 6)/Blender Basic UV Unwrapping Tutorial (Donut Part 6) [yxAqN8TzFbo].mkv", false, 10, ~U[2025-12-04 18:33:40Z]] 21:16:37.281 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=3.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:37.282 [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[2025-12-02 21:30:23Z], 10] 21:16:37.283 [debug] QUERY OK source="media_items" db=0.8ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Let's texture that donut 🍩\nNew parts releasing every other day 🔜\n\nIn this video we'll texture the table, plate, donut and icing using textures from Poliigon.\n\nDownload all textures: https://www.poliigon.com/donut\nDownload Poliigon addon: https://www.poliigon.com/blender\n\n\n=== Chapter Marks ✂️===\n0:20 Introduction\n0:20 Adding an image texture\n2:34 What are PBR Textures?\n4:24 Manually importing PBR textures\n15:57 Importing PBR textures with the Poliigon Addon\n18:13 Texturing the speckled plate\n21:37 Texturing the icing\n27:42 Texturing the donut\n\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "Blender Basic Texturing Tutorial (Donut Part 5)", "f761b01a-b5d4-4722-bced-aaedc5d30d6a", "https://www.youtube.com/watch?v=h30ZJQrb4s8", "h30ZJQrb4s8", false, 1913, false, 4, "/downloads/Blender Guru/2025-12-02 Blender Basic Texturing Tutorial (Donut Part 5)/Blender Basic Texturing Tutorial (Donut Part 5) [h30ZJQrb4s8].mkv", false, false, 10, [], 98, ~U[2025-12-02 21:30:23Z], ~U[2025-12-23 21:16:37Z], ~U[2025-12-23 21:16:37Z], "Let's texture that donut 🍩\nNew parts releasing every other day 🔜\n\nIn this video we'll texture the table, plate, donut and icing using textures from Poliigon.\n\nDownload all textures: https://www.poliigon.com/donut\nDownload Poliigon addon: https://www.poliigon.com/blender\n\n\n=== Chapter Marks ✂️===\n0:20 Introduction\n0:20 Adding an image texture\n2:34 What are PBR Textures?\n4:24 Manually importing PBR textures\n15:57 Importing PBR textures with the Poliigon Addon\n18:13 Texturing the speckled plate\n21:37 Texturing the icing\n27:42 Texturing the donut\n\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "Blender Basic Texturing Tutorial (Donut Part 5)", "https://www.youtube.com/watch?v=h30ZJQrb4s8", "h30ZJQrb4s8", 1913, false, "/downloads/Blender Guru/2025-12-02 Blender Basic Texturing Tutorial (Donut Part 5)/Blender Basic Texturing Tutorial (Donut Part 5) [h30ZJQrb4s8].mkv", false, 10, ~U[2025-12-02 21:30:23Z]] 21:16:37.284 [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" = ?) [10] 21:16:37.284 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-11-30 19:04:10Z], 10] 21:16:37.288 [debug] QUERY OK source="media_items" db=2.9ms idle=3.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Let's render that donut 🍩\nNew parts releasing every other day.\n\nIn this video you'll learn how to model the plate, make the donut lumpy, create basic materials and do a render.\n\nAll Links🔗: https://www.blenderguru.com/tutorials/blender-donut-v5-tutorial\n\nPoliigon (My sister company): http://www.poliigon.com High-quality Models, Textures, HDRIs\n\n=== Chapter Marks ✂️===\n0:00 Model the Plate\n8:29 Using a Lattice to make the Donut lumpy\n16:03 Your First Render\n17:02 Controlling the Camera\n20:21 Using Raytracing\n22:35 Render View Mode\n23:30 Basic Materials\n26:30 SSS\n29:35 Adding the table\n32:02 The Beginners Academy\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "Blender Basic Materials Tutorial (Donut Part 4)", "6fcb60ac-aba1-4bef-a27c-15bf6134f5c9", "https://www.youtube.com/watch?v=5Xlu2zwbJd0", "5Xlu2zwbJd0", false, 2012, false, 5, "/downloads/Blender Guru/2025-11-30 Blender Basic Materials Tutorial (Donut Part 4)/Blender Basic Materials Tutorial (Donut Part 4) [5Xlu2zwbJd0].mkv", false, false, 10, [], 98, ~U[2025-11-30 19:04:10Z], ~U[2025-12-23 21:16:37Z], ~U[2025-12-23 21:16:37Z], "Let's render that donut 🍩\nNew parts releasing every other day.\n\nIn this video you'll learn how to model the plate, make the donut lumpy, create basic materials and do a render.\n\nAll Links🔗: https://www.blenderguru.com/tutorials/blender-donut-v5-tutorial\n\nPoliigon (My sister company): http://www.poliigon.com High-quality Models, Textures, HDRIs\n\n=== Chapter Marks ✂️===\n0:00 Model the Plate\n8:29 Using a Lattice to make the Donut lumpy\n16:03 Your First Render\n17:02 Controlling the Camera\n20:21 Using Raytracing\n22:35 Render View Mode\n23:30 Basic Materials\n26:30 SSS\n29:35 Adding the table\n32:02 The Beginners Academy\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "Blender Basic Materials Tutorial (Donut Part 4)", "https://www.youtube.com/watch?v=5Xlu2zwbJd0", "5Xlu2zwbJd0", 2012, false, "/downloads/Blender Guru/2025-11-30 Blender Basic Materials Tutorial (Donut Part 4)/Blender Basic Materials Tutorial (Donut Part 4) [5Xlu2zwbJd0].mkv", false, 10, ~U[2025-11-30 19:04:10Z]] 21:16:37.288 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:37.289 [debug] QUERY OK source="media_items" db=0.5ms idle=5.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-28 19:39:18Z], 10] 21:16:37.290 [debug] QUERY OK source="media_items" db=0.8ms idle=5.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Let's glaze that donut 🍩\nNew parts releasing every other day 🔜\n\nIn this video you'll learn how to model and sculpt dripping icing over the donut using Blender 5.0.\n\nAll Links🔗: https://www.blenderguru.com/tutorials/blender-donut-v5-tutorial\n\n=== Chapter Marks :scissors:===\n0:00 Naming Objects\n2:01 Choosing the right technique\n3:16 Duplicating an Object \n4:08 Selecting half the donut\n5:46 Unstuck Yourself Guide\n7:35 Adding thickness\n8:36 Adding randomness\n13:03 Adding runoff droplets\n14:26 The Shrinkwrap Modifier\n24:40 Thickness Variation\n28:50 Inflate/Deflate Brush \n30:24 Homework - Create a Plate\n\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "Blender Basic Organic Modelling Tutorial (Donut Part 3)", "141c7cb4-1865-4e04-9ac8-a15e4dd9c520", "https://www.youtube.com/watch?v=9OA2asQdi_U", "9OA2asQdi_U", false, 1883, false, 6, "/downloads/Blender Guru/2025-11-28 Blender Basic Organic Modelling Tutorial (Donut Part 3)/Blender Basic Organic Modelling Tutorial (Donut Part 3) [9OA2asQdi_U].mkv", false, false, 10, [], 98, ~U[2025-11-28 19:39:18Z], ~U[2025-12-23 21:16:37Z], ~U[2025-12-23 21:16:37Z], "Let's glaze that donut 🍩\nNew parts releasing every other day 🔜\n\nIn this video you'll learn how to model and sculpt dripping icing over the donut using Blender 5.0.\n\nAll Links🔗: https://www.blenderguru.com/tutorials/blender-donut-v5-tutorial\n\n=== Chapter Marks :scissors:===\n0:00 Naming Objects\n2:01 Choosing the right technique\n3:16 Duplicating an Object \n4:08 Selecting half the donut\n5:46 Unstuck Yourself Guide\n7:35 Adding thickness\n8:36 Adding randomness\n13:03 Adding runoff droplets\n14:26 The Shrinkwrap Modifier\n24:40 Thickness Variation\n28:50 Inflate/Deflate Brush \n30:24 Homework - Create a Plate\n\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "Blender Basic Organic Modelling Tutorial (Donut Part 3)", "https://www.youtube.com/watch?v=9OA2asQdi_U", "9OA2asQdi_U", 1883, false, "/downloads/Blender Guru/2025-11-28 Blender Basic Organic Modelling Tutorial (Donut Part 3)/Blender Basic Organic Modelling Tutorial (Donut Part 3) [9OA2asQdi_U].mkv", false, 10, ~U[2025-11-28 19:39:18Z]] 21:16:37.291 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:37.292 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-11-26 23:52:00Z], 10] 21:16:37.293 [debug] QUERY OK source="media_items" db=0.8ms idle=3.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Let's model that coffee mug ☕\n\nIn this video you'll learn how model a realistic coffee mug from a reference image, using Blender 5.0.\n\nAll Links🔗: https://www.blenderguru.com/tutorials/blender-donut-v5-tutorial\n\n=== Chapter Marks ✂️===\n0:00 Importance of Reference\n03:25 Adding a Reference Image\n07:31 Modelling the large forms\n10:18 The bottom lip\n13:25 Modelling the handle\n20:54 Joining the handle into itself\n23:36 Fixing shading artifacts\n27:09 Adding polish\n29:19 Homework!\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\n\nReference Image CC-BY: madaboutpottery.com", "Blender Basic Modelling Tutorial (Donut Part 2)", "ad2842e4-d18f-4029-97a7-a149bd324f1c", "https://www.youtube.com/watch?v=K1UyEdmSttQ", "K1UyEdmSttQ", false, 1850, false, 7, "/downloads/Blender Guru/2025-11-26 Blender Basic Modelling Tutorial (Donut Part 2)/Blender Basic Modelling Tutorial (Donut Part 2) [K1UyEdmSttQ].mkv", false, false, 10, [], 98, ~U[2025-11-26 23:52:00Z], ~U[2025-12-23 21:16:37Z], ~U[2025-12-23 21:16:37Z], "Let's model that coffee mug ☕\n\nIn this video you'll learn how model a realistic coffee mug from a reference image, using Blender 5.0.\n\nAll Links🔗: https://www.blenderguru.com/tutorials/blender-donut-v5-tutorial\n\n=== Chapter Marks ✂️===\n0:00 Importance of Reference\n03:25 Adding a Reference Image\n07:31 Modelling the large forms\n10:18 The bottom lip\n13:25 Modelling the handle\n20:54 Joining the handle into itself\n23:36 Fixing shading artifacts\n27:09 Adding polish\n29:19 Homework!\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\n\nReference Image CC-BY: madaboutpottery.com", "Blender Basic Modelling Tutorial (Donut Part 2)", "https://www.youtube.com/watch?v=K1UyEdmSttQ", "K1UyEdmSttQ", 1850, false, "/downloads/Blender Guru/2025-11-26 Blender Basic Modelling Tutorial (Donut Part 2)/Blender Basic Modelling Tutorial (Donut Part 2) [K1UyEdmSttQ].mkv", false, 10, ~U[2025-11-26 23:52:00Z]] 21:16:37.293 [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" = ?) [10] 21:16:37.294 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-11-24 22:30:07Z], 10] 21:16:37.658 [debug] QUERY OK source="media_items" db=363.3ms idle=3.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Here we go again 🍩 More parts releasing every other day.\n\nIn this video you'll learn how to use Blender 5.0's core tools and techniques by making a donut.\n\n===Links🔗===\n\nDownload Blender: https://www.blender.org/download/\n\nBeginner Academy: https://academy.blenderguru.com/join\n\nKeyboard Shortcut Guide: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=drive_link\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nBlender Guru: http://www.blenderguru.com \nPoliigon (My sister company): http://www.poliigon.com High-quality Models, Textures, HDRIs\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:50 Download and Install Blender\n1:30 Navigation\n6:02 Adding objects\n9:32 Shade Smooth\n10:27 Creating a coffee mug\n12:13 Move Tool\n15:42 Edit Mode\n17:23 Different Select Options\n17:57 Delete Face (creating the opening for mug)\n18:27 Introduction to Modifiers\n20:40 Add Subsurf Modifier\n22:43 Add Loop cuts\n24:31 Inset Tool\n26:67 Change thickness of the cup\n27:11 Save Blender File Project \n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "Blender Donut Tutorial (2026)", "5fdbc2d7-2493-4e4d-8cb6-9adea00c32cb", "https://www.youtube.com/watch?v=-tbSCMbJA6o", "-tbSCMbJA6o", false, 1709, false, 8, "/downloads/Blender Guru/2025-11-24 Blender Donut Tutorial (2026)/Blender Donut Tutorial (2026) [-tbSCMbJA6o].mkv", false, false, 10, [], 98, ~U[2025-11-24 22:30:07Z], ~U[2025-12-23 21:16:37Z], ~U[2025-12-23 21:16:37Z], "Here we go again 🍩 More parts releasing every other day.\n\nIn this video you'll learn how to use Blender 5.0's core tools and techniques by making a donut.\n\n===Links🔗===\n\nDownload Blender: https://www.blender.org/download/\n\nBeginner Academy: https://academy.blenderguru.com/join\n\nKeyboard Shortcut Guide: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=drive_link\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nBlender Guru: http://www.blenderguru.com \nPoliigon (My sister company): http://www.poliigon.com High-quality Models, Textures, HDRIs\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:50 Download and Install Blender\n1:30 Navigation\n6:02 Adding objects\n9:32 Shade Smooth\n10:27 Creating a coffee mug\n12:13 Move Tool\n15:42 Edit Mode\n17:23 Different Select Options\n17:57 Delete Face (creating the opening for mug)\n18:27 Introduction to Modifiers\n20:40 Add Subsurf Modifier\n22:43 Add Loop cuts\n24:31 Inset Tool\n26:67 Change thickness of the cup\n27:11 Save Blender File Project \n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911", "Blender Donut Tutorial (2026)", "https://www.youtube.com/watch?v=-tbSCMbJA6o", "-tbSCMbJA6o", 1709, false, "/downloads/Blender Guru/2025-11-24 Blender Donut Tutorial (2026)/Blender Donut Tutorial (2026) [-tbSCMbJA6o].mkv", false, 10, ~U[2025-11-24 22:30:07Z]] 21:16:37.659 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=366.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:37.659 [debug] QUERY OK source="media_items" db=0.5ms idle=366.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-17 08:32:36Z], 10] 21:16:37.678 [debug] QUERY OK source="media_items" db=18.0ms idle=366.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Signup to Poliigon: https://www.poliigon.com/blenderguru\n\n===Links🔗===\n\nGeonode setup: https://drive.google.com/file/d/1pwqqoM3V5NcMs5VmsRzlMjR1yIFawJpf/view?usp=sharing\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://www.dropbox.com/scl/fi/dboz7fuh0f5255n5ocrdl/BlenderKeymap-IndustryCompatible_v2.pdf?rlkey=2yxe23jev9y2qmdg7txrzy8ip&dl=0\n\nBlender Guru: http://www.blenderguru.com \nPoliigon (My sister company): https://www.poliigon.com/blenderguru \n\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\n\nCredits:\nProducer and editor: @rileyb3d \nMineshaft Dressing: Michael Eng\nGeometry Node Simulation: Sai Charon\nScript and Direction: Me", "How to Make a Mineshaft Ride in Blender", "a2bfac57-6a9d-41a0-97cd-cc3f8eb68d01", "https://www.youtube.com/watch?v=gaYjZ8IBvds", "gaYjZ8IBvds", false, 611, false, 9, "/downloads/Blender Guru/2025-09-17 How to Make a Mineshaft Ride in Blender/How to Make a Mineshaft Ride in Blender [gaYjZ8IBvds].mkv", false, false, 10, [], 98, ~U[2025-09-17 08:32:36Z], ~U[2025-12-23 21:16:37Z], ~U[2025-12-23 21:16:37Z], "Signup to Poliigon: https://www.poliigon.com/blenderguru\n\n===Links🔗===\n\nGeonode setup: https://drive.google.com/file/d/1pwqqoM3V5NcMs5VmsRzlMjR1yIFawJpf/view?usp=sharing\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://www.dropbox.com/scl/fi/dboz7fuh0f5255n5ocrdl/BlenderKeymap-IndustryCompatible_v2.pdf?rlkey=2yxe23jev9y2qmdg7txrzy8ip&dl=0\n\nBlender Guru: http://www.blenderguru.com \nPoliigon (My sister company): https://www.poliigon.com/blenderguru \n\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\n\nCredits:\nProducer and editor: @rileyb3d \nMineshaft Dressing: Michael Eng\nGeometry Node Simulation: Sai Charon\nScript and Direction: Me", "How to Make a Mineshaft Ride in Blender", "https://www.youtube.com/watch?v=gaYjZ8IBvds", "gaYjZ8IBvds", 611, false, "/downloads/Blender Guru/2025-09-17 How to Make a Mineshaft Ride in Blender/How to Make a Mineshaft Ride in Blender [gaYjZ8IBvds].mkv", false, 10, ~U[2025-09-17 08:32:36Z]] 21:16:37.679 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=384.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:37.680 [debug] QUERY OK source="media_items" db=0.5ms idle=21.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-25 22:59:19Z], 10] 21:16:37.681 [debug] QUERY OK source="media_items" db=0.6ms idle=21.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Don't learn geometry nodes. Join the waitlist for the Blender Guru Academy: https://blender-guru.mykajabi.com/opt-in\nBuy my donut shirt: http://merch.blenderguru.com\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:17 Don't Learn Geometry Nodes\n2:09 Watch More Tutorials\n3:21 Stay Motivated\n5:05 Use AI\n6:28 Stick to Reference\n\nHow to Setup a Wallpaper Cycle:\nWindows 11: https://youtu.be/5qTuoj_TYEg?si=aKX8R0NEsMr4qqFk\nMac: https://youtu.be/d5bdOf1t9ds?si=Dt6uMaCu9ehVQFc9\niPhone: https://youtu.be/T6Tb73eY_M4?si=coLKCjA3iTxwkjYe\nAndroid: https://youtu.be/enY7c8i_oKc?si=U44I7MhT66iIGk1i\n\n===Follow me🫰===\nX: https://x.com/andrewpprice\nInstagram: https://www.instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\nThis Week in 3D Newsletter: https://www.blenderguru.com/thisweekin3d", "Starting Blender? Advice from a Pro", "43a26aca-b363-4270-8165-5923a186e8af", "https://www.youtube.com/watch?v=-rO1o5uzCOc", "-rO1o5uzCOc", false, 482, false, 10, "/downloads/Blender Guru/2025-06-25 Starting Blender? Advice from a Pro/Starting Blender? Advice from a Pro [-rO1o5uzCOc].mkv", false, false, 10, [], 98, ~U[2025-06-25 22:59:19Z], ~U[2025-12-23 21:16:37Z], ~U[2025-12-23 21:16:37Z], "Don't learn geometry nodes. Join the waitlist for the Blender Guru Academy: https://blender-guru.mykajabi.com/opt-in\nBuy my donut shirt: http://merch.blenderguru.com\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:17 Don't Learn Geometry Nodes\n2:09 Watch More Tutorials\n3:21 Stay Motivated\n5:05 Use AI\n6:28 Stick to Reference\n\nHow to Setup a Wallpaper Cycle:\nWindows 11: https://youtu.be/5qTuoj_TYEg?si=aKX8R0NEsMr4qqFk\nMac: https://youtu.be/d5bdOf1t9ds?si=Dt6uMaCu9ehVQFc9\niPhone: https://youtu.be/T6Tb73eY_M4?si=coLKCjA3iTxwkjYe\nAndroid: https://youtu.be/enY7c8i_oKc?si=U44I7MhT66iIGk1i\n\n===Follow me🫰===\nX: https://x.com/andrewpprice\nInstagram: https://www.instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\nThis Week in 3D Newsletter: https://www.blenderguru.com/thisweekin3d", "Starting Blender? Advice from a Pro", "https://www.youtube.com/watch?v=-rO1o5uzCOc", "-rO1o5uzCOc", 482, false, "/downloads/Blender Guru/2025-06-25 Starting Blender? Advice from a Pro/Starting Blender? Advice from a Pro [-rO1o5uzCOc].mkv", false, 10, ~U[2025-06-25 22:59:19Z]] 21:16:37.681 [debug] QUERY OK source="sources" db=0.2ms idle=21.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:37.682 [debug] QUERY OK source="media_items" db=0.3ms 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[2025-05-30 20:53:11Z], 10] 21:16:37.684 [debug] QUERY OK source="media_items" db=1.6ms idle=3.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["10 render hacks I learned after 20 years of using Blender.\n\nDownload the Poliigon addon: https://www.poliigon.com/blender?utm_campaign=renderhacks&utm_source=youtube&utm_medium=bg\n\nJoin the Blender Guru Discord: https://blenderguru.com/discord\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:19 Instancing\n1:05 Frustum Culling\n1:55 Light Clamping\n2:23 Simplify Window Glass\n3:01 Persistent Data\n3:42 Noise Threshold\n4:39 Use Smaller Textures\n6:07 Fast GI Approximation\n6:53 Switch to GPU\n7:44 Simplify Geometry\n\n\n===Follow me🫰===\n\nX: https://x.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\nThis Week in 3D Newsletter: https://www.blenderguru.com/thisweekin3d", "10 Easy Ways to Render Faster in Blender", "1835d9cb-f350-4d3a-a903-067814ec5e5e", "https://www.youtube.com/watch?v=kIW648Cfo18", "kIW648Cfo18", false, 541, false, 11, "/downloads/Blender Guru/2025-05-30 10 Easy Ways to Render Faster in Blender/10 Easy Ways to Render Faster in Blender [kIW648Cfo18].mkv", false, false, 10, [], 98, ~U[2025-05-30 20:53:11Z], ~U[2025-12-23 21:16:37Z], ~U[2025-12-23 21:16:37Z], "10 render hacks I learned after 20 years of using Blender.\n\nDownload the Poliigon addon: https://www.poliigon.com/blender?utm_campaign=renderhacks&utm_source=youtube&utm_medium=bg\n\nJoin the Blender Guru Discord: https://blenderguru.com/discord\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:19 Instancing\n1:05 Frustum Culling\n1:55 Light Clamping\n2:23 Simplify Window Glass\n3:01 Persistent Data\n3:42 Noise Threshold\n4:39 Use Smaller Textures\n6:07 Fast GI Approximation\n6:53 Switch to GPU\n7:44 Simplify Geometry\n\n\n===Follow me🫰===\n\nX: https://x.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\nThis Week in 3D Newsletter: https://www.blenderguru.com/thisweekin3d", "10 Easy Ways to Render Faster in Blender", "https://www.youtube.com/watch?v=kIW648Cfo18", "kIW648Cfo18", 541, false, "/downloads/Blender Guru/2025-05-30 10 Easy Ways to Render Faster in Blender/10 Easy Ways to Render Faster in Blender [kIW648Cfo18].mkv", false, 10, ~U[2025-05-30 20:53:11Z]] 21:16:37.684 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [10] 21:16:37.685 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-04-09 17:38:12Z], 10] 21:16:37.686 [debug] QUERY OK source="media_items" db=1.1ms idle=3.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["This is a complete course for understanding how to use the Eevee rendering engine in Blender. Eevee is an (almost) real-time rendering engine. So you can render animation sequences in minutes rather than days with Cycles. This video will take complete beginners through everything they need to know to get started with Eevee. You'll learn the theory of how Eevee works, how to fix common problems, and how to optimize an Eevee scene for rendering.\n\n===Links🔗===\n\nPoliigon Blender Addon: https://www.poliigon.com/blender?utm_campaign=eevee&utm_source=youtube&utm_medium=bg\n\nBlended Reflection Bug: https://projects.blender.org/blender/blender/issues/135198#issuecomment-1507735\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:56 Modelling the room\n2:01 Fixing Eevee light bleed\n05:00 Why does Eevee have noise?\n06:10 Increasing samples to specific areas\n08:10 Adding reflections in Eevee\n09:06 Fixing reflection artifacts\n14:44 Intro to Reflection Probes\n17:39 Spherical Probes\n20:28 Light Bounces\n26:00 Optimizing Raytracing\n27:50 Improving GI Bounces\n29:18 Introduction to Volume Probes (Baked Lighting)\n35:05 Getting a perfect Volume Probe bake\n42:21 Surfel Resolution\n43:20 Using image textures \n47:26 Improving texture sharpness\n48:28 Using HDRIs\n52:44 Glass\n57:05 Thin glass (cups and windows)\n1:02:44 Volumetrics\n1:04:06 What to do when volume probes look dark\n1:06:48 Fixing World Light bleed\n1:07:44 Fixing flickering alpha maps\n1:08:50 Optimizing textures\n1:11:35 Optimizing reflection probes\n1:14:16 Sphere probe resolution\n1:14:58 Raytracing optimizations\n\n\n===Follow me🫰===\n\nX: https://x.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\n\nMusic ID: JFTPWZDFYLB752M4", "How to use Eevee - Full Blender Course", "82483dd2-6c95-4fc1-bc0e-1e822fbc5dc4", "https://www.youtube.com/watch?v=-gW6vk_OuNQ", "-gW6vk_OuNQ", false, 4614, false, 12, "/downloads/Blender Guru/2025-04-09 How to use Eevee - Full Blender Course/How to use Eevee - Full Blender Course [-gW6vk_OuNQ].mkv", false, false, 10, [], 98, ~U[2025-04-09 17:38:12Z], ~U[2025-12-23 21:16:37Z], ~U[2025-12-23 21:16:37Z], "This is a complete course for understanding how to use the Eevee rendering engine in Blender. Eevee is an (almost) real-time rendering engine. So you can render animation sequences in minutes rather than days with Cycles. This video will take complete beginners through everything they need to know to get started with Eevee. You'll learn the theory of how Eevee works, how to fix common problems, and how to optimize an Eevee scene for rendering.\n\n===Links🔗===\n\nPoliigon Blender Addon: https://www.poliigon.com/blender?utm_campaign=eevee&utm_source=youtube&utm_medium=bg\n\nBlended Reflection Bug: https://projects.blender.org/blender/blender/issues/135198#issuecomment-1507735\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:56 Modelling the room\n2:01 Fixing Eevee light bleed\n05:00 Why does Eevee have noise?\n06:10 Increasing samples to specific areas\n08:10 Adding reflections in Eevee\n09:06 Fixing reflection artifacts\n14:44 Intro to Reflection Probes\n17:39 Spherical Probes\n20:28 Light Bounces\n26:00 Optimizing Raytracing\n27:50 Improving GI Bounces\n29:18 Introduction to Volume Probes (Baked Lighting)\n35:05 Getting a perfect Volume Probe bake\n42:21 Surfel Resolution\n43:20 Using image textures \n47:26 Improving texture sharpness\n48:28 Using HDRIs\n52:44 Glass\n57:05 Thin glass (cups and windows)\n1:02:44 Volumetrics\n1:04:06 What to do when volume probes look dark\n1:06:48 Fixing World Light bleed\n1:07:44 Fixing flickering alpha maps\n1:08:50 Optimizing textures\n1:11:35 Optimizing reflection probes\n1:14:16 Sphere probe resolution\n1:14:58 Raytracing optimizations\n\n\n===Follow me🫰===\n\nX: https://x.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\n\nMusic ID: JFTPWZDFYLB752M4", "How to use Eevee - Full Blender Course", "https://www.youtube.com/watch?v=-gW6vk_OuNQ", "-gW6vk_OuNQ", 4614, false, "/downloads/Blender Guru/2025-04-09 How to use Eevee - Full Blender Course/How to use Eevee - Full Blender Course [-gW6vk_OuNQ].mkv", false, 10, ~U[2025-04-09 17:38:12Z]] 21:16:37.687 [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" = ?) [10] 21:16:37.688 [debug] QUERY OK source="media_items" db=0.4ms 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[2024-07-26 20:58:38Z], 10] 21:16:37.689 [debug] QUERY OK source="media_items" db=1.1ms idle=3.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["A full tutorial course on the fundamentals of texturing and shaders in Blender. Learn how to make a grungy brick wall for realistic environments.\n\nWhat you'll learn:\n0:00 Shader Fundamentals\n5:50 Procedural Textures\n09:05 Image Textures\n13:20 The Importance of PBR Textures\n17:09 UV Unwrapping\n20:22 PBR Texture Setup\n29:55 You're wrong about bumps!\n40:20 Node Wrangler Addon\n43:16 Poliigon Addon\n45:30 Adjusting a texture\n50:22 Breaking up repetition\n1:03:20 Image texture painting\n1:06:54 Vertex Painting\n1:12:12 The \"Color Burn Technique\"\n1:22:23 Using Decals\n1:29:36 Wet leak patterns\n1:36:40 A challenge\n1:38:06 Efflorescence effect\n1:40:50 Desaturation effect\n1:44:33 Spalling effect\n1:51:22 The final node setup\n\n===Links🔗===\n-Join the waitlist for my upcoming Blender course: https://blender-guru.mykajabi.com/opt-in\nFree Brick Texture: https://www.poliigon.com/texture/dutch-bond-reclaimed-brick-texture-dull-brown/8320?utm_campaign=texturingbasics&utm_source=youtube&utm_medium=bg\n\n-Poliigon Addon: https://www.poliigon.com/blender?utm_campaign=texturingbasics&utm_source=youtube&utm_medium=bg\n\n-Graffiti Texture: https://drive.google.com/file/d/17edzCP56HMX8731HAACz6Dh-Bmxzuw1a/view?usp=drive_link\n\n-Abandoned Brick reference: https://www.flickr.com/photos/slworking/4664255917/\n\n-White Efflorescence references: https://www.alamy.com/the-old-abandoned-unfinished-brick-building-close-up-image214317155.html?imageid=F4D792C6-FF04-48A3-BBA1-554C9EA4F066&p=282969&pn=3&searchId=3cf46225d0dab2cfe6cbf6f01607d032&searchtype=0 \nhttps://unsplash.com/photos/brown-bricked-wall-f4_1ZqzokZI\n\n-Scale Reference Man model (cc0): https://drive.google.com/file/d/149WEThtRHrslWbHeddzAGXmlBf8RWkpC/view?usp=drive_link\n\n===Animation Credits===\nConcept & Layout - One Pixel Brush (https://onepixelbrush.com/)\nScene Polish & Camera Animation - Pawel Pecherzewski\nShader - Andrew Price\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: http://www.linkedin.com/in/andrew-price-17678911\nPoliigon: http://www.poliigon.com\n\nMusic license ID JFTPWZDFYLB752M4", "How to Texture in Blender - Full Course", "5ce1f2df-a619-4659-a556-b6a58ca9fd3d", "https://www.youtube.com/watch?v=uHCJoNEWjXo", "uHCJoNEWjXo", false, 6790, false, 13, "/downloads/Blender Guru/2024-07-26 How to Texture in Blender - Full Course/How to Texture in Blender - Full Course [uHCJoNEWjXo].mp4", false, false, 10, [], 98, ~U[2024-07-26 20:58:38Z], ~U[2025-12-23 21:16:37Z], ~U[2025-12-23 21:16:37Z], "A full tutorial course on the fundamentals of texturing and shaders in Blender. Learn how to make a grungy brick wall for realistic environments.\n\nWhat you'll learn:\n0:00 Shader Fundamentals\n5:50 Procedural Textures\n09:05 Image Textures\n13:20 The Importance of PBR Textures\n17:09 UV Unwrapping\n20:22 PBR Texture Setup\n29:55 You're wrong about bumps!\n40:20 Node Wrangler Addon\n43:16 Poliigon Addon\n45:30 Adjusting a texture\n50:22 Breaking up repetition\n1:03:20 Image texture painting\n1:06:54 Vertex Painting\n1:12:12 The \"Color Burn Technique\"\n1:22:23 Using Decals\n1:29:36 Wet leak patterns\n1:36:40 A challenge\n1:38:06 Efflorescence effect\n1:40:50 Desaturation effect\n1:44:33 Spalling effect\n1:51:22 The final node setup\n\n===Links🔗===\n-Join the waitlist for my upcoming Blender course: https://blender-guru.mykajabi.com/opt-in\nFree Brick Texture: https://www.poliigon.com/texture/dutch-bond-reclaimed-brick-texture-dull-brown/8320?utm_campaign=texturingbasics&utm_source=youtube&utm_medium=bg\n\n-Poliigon Addon: https://www.poliigon.com/blender?utm_campaign=texturingbasics&utm_source=youtube&utm_medium=bg\n\n-Graffiti Texture: https://drive.google.com/file/d/17edzCP56HMX8731HAACz6Dh-Bmxzuw1a/view?usp=drive_link\n\n-Abandoned Brick reference: https://www.flickr.com/photos/slworking/4664255917/\n\n-White Efflorescence references: https://www.alamy.com/the-old-abandoned-unfinished-brick-building-close-up-image214317155.html?imageid=F4D792C6-FF04-48A3-BBA1-554C9EA4F066&p=282969&pn=3&searchId=3cf46225d0dab2cfe6cbf6f01607d032&searchtype=0 \nhttps://unsplash.com/photos/brown-bricked-wall-f4_1ZqzokZI\n\n-Scale Reference Man model (cc0): https://drive.google.com/file/d/149WEThtRHrslWbHeddzAGXmlBf8RWkpC/view?usp=drive_link\n\n===Animation Credits===\nConcept & Layout - One Pixel Brush (https://onepixelbrush.com/)\nScene Polish & Camera Animation - Pawel Pecherzewski\nShader - Andrew Price\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: http://www.linkedin.com/in/andrew-price-17678911\nPoliigon: http://www.poliigon.com\n\nMusic license ID JFTPWZDFYLB752M4", "How to Texture in Blender - Full Course", "https://www.youtube.com/watch?v=uHCJoNEWjXo", "uHCJoNEWjXo", 6790, false, "/downloads/Blender Guru/2024-07-26 How to Texture in Blender - Full Course/How to Texture in Blender - Full Course [uHCJoNEWjXo].mp4", false, 10, ~U[2024-07-26 20:58:38Z]] 21:16:37.690 [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" = ?) [10] 21:16:37.690 [debug] QUERY OK source="media_items" db=0.3ms 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[2024-07-25 21:11:44Z], 10] 21:16:37.692 [debug] QUERY OK source="media_items" db=1.5ms idle=3.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nThe complete beginner blender donut tutorial course in one video for those who prefer it over the multipart series.\n\nWatch it in parts: https://www.youtube.com/playlist?list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z\n\n===Links🔗===\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nDonate to Blender: https://fund.blender.org/\n\nPoliigon Blender Addon: https://www.poliigon.com/blender?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\nMarble Texture on Poliigon: https://www.poliigon.com/texture/denali-quartzite-texture-gray/8060?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\nPlate model: https://www.poliigon.com/model/ceramic-plate-model-white-with-dark-specks/8110?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\nUtensils model: https://www.poliigon.com/model/wooden-utensils-jar-model/3441?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\n\nUpcoming Blender Course: https://blender-guru.mykajabi.com/opt-in\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\n\n=== Chapter Marks (separated by paragraph spaces for each part)✂️===\n00:00 Intro\n01:10 Download and Install\n02:15 Interface & Navigation\n05:09 Render Mode & Panning\n06:33 Moving objects and camera & making a render\n12:42 Change the material\n15:16 Scale & Rotation\n\n17:52 Add the Torus\n22:26 Subdivision modifier\n29:38 Proportional editing\n31:29 Deforming the donut\n32:56 Shrinking the circumference\n\n36:30 Duplicate an object\n38:25 Name objects\n41:36 The solidify modifier & Snap to Face\n45:16 Apply the subsurf modifier\n49:35 Make the edge wavy and round\n53:51 Extrusion\n\n57:08 Technical check\n58:18 Shrinkwrap modifier\n1:01:14 Applying thickness\n1:05:49 Inflate, Grab, & Mask brushes\n1:12:46 Filter & Smooth brushes\n\n1:18:51 Creating the countertop\n1:19:24 Parenting objects\n1:21:02 Countertop texture\n1:24:34 Material nodes, Roughness map, & normal map\n1:31:49 Texture Painting\n\n1:37:36 Geometry Nodes\n1:40:56 Scattering points\n1:42:31 Make a round sprinkle & Poisson Disk\n1:46:56 Weight painting\n1:54:55 Accurate real-world size\n1:58:10 Fix the sprinkle density\n\n2:02:53 The cylinder\n2:04:11 Model the sprinkle\n2:07:37 Sprinkle variants\n2:11:04 Organize with Collections\n2:15:26 Scattering an entire collection & changing the sprinkle rotation\n2:18:21 Rotation Euler & random rotation\n2:23:04 Distance and sizing\n\n2:26:26 Apply materials to multiple objects\n2:27:38 Generate random values per materials\n2:31:14 Metallic sprinkles\n2:35:35 Fly navigation\n2:37:36 Render engines\n2:43:43 Computer too slow?\n2:45:53 Reset the lamp location\n2:47:12 Subsurface Scattering (SSS)\n\n2:54:18 Image reference & modelling the plate\n3:04:49 Stack the donuts\n3:10:28 Assign sprinkles\n3:11:22 Trackball rotation\n3:12:10 Scale the countertop and making the backsplash\n3:13:31 Icing colors\n3:16:34 Creating a ceramic plate material\n\n3:18:43 Sky Texture\n3:21:03 Kitchen enclosure\n3:23:24 Snapping feature and removing unneeded faces\n3:26:39 The window\n3:27:31 Shaping the light and tweaking the sun intensity\n3:31:48 Import a model\n3:33:45 Install an addon\n\n3:36:05 Lighting fixes\n3:39:26 Intro to compositor\n3:43:11 Color management \"Looks\" & AgX\n3:45:18 Creating glare\n3:51:08 Realtime compositing\n3:54:51 Lens Distortion & Chromatic Aberration\n\n3:58:00 Keyframe basics\n4:00:18 Adding a pivot object\n4:01:23 Parenting to the empty\n4:02:11 Create rotation keyframes\n4:04:39 The Dope Sheet & The Graph Editor\n4:06:35 Changing the keyframe ease\n4:08:09 Keyframing the scale\n4:09:47 Normalizing the Graph Editor\n4:11:51 Frames per second\n\n4:14:20 Choosing the sample count\n4:17:12 Noise thresh" <> ..., "Beginner Blender 4.0 Tutorial (2023)", "a122b9dd-b9c1-41a1-9541-6dd8b184b8ba", "https://www.youtube.com/watch?v=4haAdmHqGOw", "4haAdmHqGOw", false, 17704, false, 14, "/downloads/Blender Guru/2024-07-25 Beginner Blender 4.0 Tutorial (2023)/Beginner Blender 4.0 Tutorial (2023) [4haAdmHqGOw].mp4", false, false, 10, [], 98, ~U[2024-07-25 21:11:44Z], ~U[2025-12-23 21:16:37Z], ~U[2025-12-23 21:16:37Z], "Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nThe complete beginner blender donut tutorial course in one video for those who prefer it over the multipart series.\n\nWatch it in parts: https://www.youtube.com/playlist?list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z\n\n===Links🔗===\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nDonate to Blender: https://fund.blender.org/\n\nPoliigon Blender Addon: https://www.poliigon.com/blender?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\nMarble Texture on Poliigon: https://www.poliigon.com/texture/denali-quartzite-texture-gray/8060?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\nPlate model: https://www.poliigon.com/model/ceramic-plate-model-white-with-dark-specks/8110?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\nUtensils model: https://www.poliigon.com/model/wooden-utensils-jar-model/3441?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\n\nUpcoming Blender Course: https://blender-guru.mykajabi.com/opt-in\n\n===Follow me🫰===\n\nTwitter: https://twitter.com/andrewpprice\nInstagram: http://instagram.com/andrewpprice\nArtStation: http://artstation.com/artist/andrewprice\nLinkedIn: www.linkedin.com/in/andrew-price-17678911\n\n=== Chapter Marks (separated by paragraph spaces for each part)✂️===\n00:00 Intro\n01:10 Download and Install\n02:15 Interface & Navigation\n05:09 Render Mode & Panning\n06:33 Moving objects and camera & making a render\n12:42 Change the material\n15:16 Scale & Rotation\n\n17:52 Add the Torus\n22:26 Subdivision modifier\n29:38 Proportional editing\n31:29 Deforming the donut\n32:56 Shrinking the circumference\n\n36:30 Duplicate an object\n38:25 Name objects\n41:36 The solidify modifier & Snap to Face\n45:16 Apply the subsurf modifier\n49:35 Make the edge wavy and round\n53:51 Extrusion\n\n57:08 Technical check\n58:18 Shrinkwrap modifier\n1:01:14 Applying thickness\n1:05:49 Inflate, Grab, & Mask brushes\n1:12:46 Filter & Smooth brushes\n\n1:18:51 Creating the countertop\n1:19:24 Parenting objects\n1:21:02 Countertop texture\n1:24:34 Material nodes, Roughness map, & normal map\n1:31:49 Texture Painting\n\n1:37:36 Geometry Nodes\n1:40:56 Scattering points\n1:42:31 Make a round sprinkle & Poisson Disk\n1:46:56 Weight painting\n1:54:55 Accurate real-world size\n1:58:10 Fix the sprinkle density\n\n2:02:53 The cylinder\n2:04:11 Model the sprinkle\n2:07:37 Sprinkle variants\ (truncated) 21:16:37.693 [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" = ?) [10] 21:16:37.694 [debug] QUERY OK source="media_items" db=0.5ms 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[2023-12-07 07:20:22Z], 10] 21:16:37.695 [debug] QUERY OK source="media_items" db=0.9ms idle=4.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nLet's finish this bad boy 🍩 Join the waitlist for my upcoming Blender course: https://blender-guru.mykajabi.com/opt-in\n\nIn this final part of the series, you'll learn how to turn your image sequence into a video using Blender's video sequencer. Plus a donut challenge!\n\n===Links🔗===\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:24 Blender for Beginners Course \n1:26 Editing in Premiere\n2:04 Video Editing in Blender\n2:42 Loading an image sequence\n3:58 Holding the last frame\n4:42 Fading to black\n6:04 Exporting the final video\n9:32 Donut variation challenge!\n\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://www.linkedin.com/in/andrew-price-17678911\nArtStation: http://artstation.com/artist/andrewprice", "Beginner Blender 4.0 Tutorial - Part 14: Finale!", "93c8739c-f0be-439e-83ea-e2f1d90cef96", "https://www.youtube.com/watch?v=xkt4HEEgoSE", "xkt4HEEgoSE", false, 651, false, 15, "/downloads/Blender Guru/2023-12-07 Beginner Blender 4.0 Tutorial - Part 14: Finale!/Beginner Blender 4.0 Tutorial - Part 14: Finale! [xkt4HEEgoSE].mp4", false, false, 10, [], 98, ~U[2023-12-07 07:20:22Z], ~U[2025-12-23 21:16:37Z], ~U[2025-12-23 21:16:37Z], "This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nLet's finish this bad boy 🍩 Join the waitlist for my upcoming Blender course: https://blender-guru.mykajabi.com/opt-in\n\nIn this final part of the series, you'll learn how to turn your image sequence into a video using Blender's video sequencer. Plus a donut challenge!\n\n===Links🔗===\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:24 Blender for Beginners Course \n1:26 Editing in Premiere\n2:04 Video Editing in Blender\n2:42 Loading an image sequence\n3:58 Holding the last frame\n4:42 Fading to black\n6:04 Exporting the final video\n9:32 Donut variation challenge!\n\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://www.linkedin.com/in/andrew-price-17678911\nArtStation: http://artstation.com/artist/andrewprice", "Beginner Blender 4.0 Tutorial - Part 14: Finale!", "https://www.youtube.com/watch?v=xkt4HEEgoSE", "xkt4HEEgoSE", 651, false, "/downloads/Blender Guru/2023-12-07 Beginner Blender 4.0 Tutorial - Part 14: Finale!/Beginner Blender 4.0 Tutorial - Part 14: Finale! [xkt4HEEgoSE].mp4", false, 10, ~U[2023-12-07 07:20:22Z]] 21:16:37.695 [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" = ?) [10] 21:16:37.696 [debug] QUERY OK source="media_items" db=0.5ms 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[2023-12-06 07:07:10Z], 10] 21:16:37.698 [debug] QUERY OK source="media_items" db=1.0ms idle=3.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nTime to finally render that 🍩 Watch Part 14: https://www.youtube.com/watch?v=xkt4HEEgoSE&list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z&index=15\n\nIn this video you'll discover how to determine the correct sample count, rendering to a still image sequence, and undergoing a Pre-Rendering Checklist.\n\n===Links🔗===\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 Choosing the sample count\n2:52 Noise threshold\n3:40 Time limit\n4:02 Rendering to a still image sequence\n7:14 Pre-Rendering Checklist Time!\n7:40 Face orientation check\n9:08 Unwanted object check\n9:58 Intersection check\n10:14 Improving the composition\n12:53 Improving the lighting\n14:46 Exposure check\n16:18 Color check\n17:09 Adding SSS to the donut\n17:43 Improving the sprinkles\n20:17 Adding Big Medium Small details\n22:42 Improving the Sky lighting\n23:14 Adding Depth of Field\n24:42 Adding Motion Blur\n25:06 Fixing final problems \n\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://facebook.com/blenderguru\nhttps://www.linkedin.com/in/andrew-price-17678911/\nArtStation: https://artstation.com/artist/andrewprice", "Beginner Blender 4.0 Tutorial - Part 13: Rendering", "90550943-357e-4a4b-a4dc-ef3bd1da714d", "https://www.youtube.com/watch?v=fSfFkh2sI4k", "fSfFkh2sI4k", false, 1793, false, 16, "/downloads/Blender Guru/2023-12-06 Beginner Blender 4.0 Tutorial - Part 13: Rendering/Beginner Blender 4.0 Tutorial - Part 13: Rendering [fSfFkh2sI4k].mp4", false, false, 10, [], 98, ~U[2023-12-06 07:07:10Z], ~U[2025-12-23 21:16:37Z], ~U[2025-12-23 21:16:37Z], "This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nTime to finally render that 🍩 Watch Part 14: https://www.youtube.com/watch?v=xkt4HEEgoSE&list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z&index=15\n\nIn this video you'll discover how to determine the correct sample count, rendering to a still image sequence, and undergoing a Pre-Rendering Checklist.\n\n===Links🔗===\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 Choosing the sample count\n2:52 Noise threshold\n3:40 Time limit\n4:02 Rendering to a still image sequence\n7:14 Pre-Rendering Checklist Time!\n7:40 Face orientation check\n9:08 Unwanted object check\n9:58 Intersection check\n10:14 Improving the composition\n12:53 Improving the lighting\n14:46 Exposure check\n16:18 Color check\n17:09 Adding SSS to the donut\n17:43 Improving the sprinkles\n20:17 Adding Big Medium Small details\n22:42 Improving the Sky lighting\n23:14 Adding Depth of Field\n24:42 Adding Motion Blur\n25:06 Fixing final problems \n\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://facebook.com/blenderguru\nhttps://www.linkedin.com/in/andrew-price-17678911/\nArtStation: https://artstation.com/artist/andrewprice", "Beginner Blender 4.0 Tutorial - Part 13: Rendering", "https://www.youtube.com/watch?v=fSfFkh2sI4k", "fSfFkh2sI4k", 1793, false, "/downloads/Blender Guru/2023-12-06 Beginner Blender 4.0 Tutorial - Part 13: Rendering/Beginner Blender 4.0 Tutorial - Part 13: Rendering [fSfFkh2sI4k].mp4", false, 10, ~U[2023-12-06 07:07:10Z]] 21:16:37.698 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [10] 21:16:37.699 [debug] QUERY OK source="media_items" db=0.3ms 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[2023-12-05 07:00:01Z], 10] 21:16:37.700 [debug] QUERY OK source="media_items" db=0.9ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nLet's animate that donut 🍩 Watch Part 13: https://www.youtube.com/watch?v=fSfFkh2sI4k&list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z&index=14\n\nIn this video you'll learn the basics of animation in Blender: placing keyframes, easing the interpolation, the dope sheet, the graph editor, frame rates and more.\n\n===Links🔗===\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 The basics of keyframing\n2:18 Adding a pivot object\n3:23 Parenting to the empty\n4:11 Creating rotation keyframes\n6:39 The Dope Sheet\n7:32 The Graph Editor\n8:35 Changing the keyframe ease\n10:09 Keyframing the scale \n11:47 Normalizing the Graph Editor\n13:51 Frames per second\n15:20 Setting an End Frame\n\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://www.linkedin.com/in/andrew-price-17678911\nArtStation: https://artstation.com/artist/andrewprice", "Beginner Blender 4.0 Tutorial - Part 12: Animation", "5e3f65ce-9bbd-44e6-922d-c7fbdc6a15fd", "https://www.youtube.com/watch?v=4-tCn4-GfM4", "4-tCn4-GfM4", false, 981, false, 17, "/downloads/Blender Guru/2023-12-05 Beginner Blender 4.0 Tutorial - Part 12: Animation/Beginner Blender 4.0 Tutorial - Part 12: Animation [4-tCn4-GfM4].mp4", false, false, 10, [], 98, ~U[2023-12-05 07:00:01Z], ~U[2025-12-23 21:16:37Z], ~U[2025-12-23 21:16:37Z], "This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nLet's animate that donut 🍩 Watch Part 13: https://www.youtube.com/watch?v=fSfFkh2sI4k&list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z&index=14\n\nIn this video you'll learn the basics of animation in Blender: placing keyframes, easing the interpolation, the dope sheet, the graph editor, frame rates and more.\n\n===Links🔗===\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 The basics of keyframing\n2:18 Adding a pivot object\n3:23 Parenting to the empty\n4:11 Creating rotation keyframes\n6:39 The Dope Sheet\n7:32 The Graph Editor\n8:35 Changing the keyframe ease\n10:09 Keyframing the scale \n11:47 Normalizing the Graph Editor\n13:51 Frames per second\n15:20 Setting an End Frame\n\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://www.linkedin.com/in/andrew-price-17678911\nArtStation: https://artstation.com/artist/andrewprice", "Beginner Blender 4.0 Tutorial - Part 12: Animation", "https://www.youtube.com/watch?v=4-tCn4-GfM4", "4-tCn4-GfM4", 981, false, "/downloads/Blender Guru/2023-12-05 Beginner Blender 4.0 Tutorial - Part 12: Animation/Beginner Blender 4.0 Tutorial - Part 12: Animation [4-tCn4-GfM4].mp4", false, 10, ~U[2023-12-05 07:00:01Z]] 21:16:37.700 [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" = ?) [10] 21:16:37.701 [debug] QUERY OK source="media_items" db=0.3ms 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[2023-11-26 07:00:20Z], 10] 21:16:37.702 [debug] QUERY OK source="media_items" db=0.8ms idle=3.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nLet's make our donut shine ✨🍩 Watch Part 12: https://www.youtube.com/watch?v=4-tCn4-GfM4&list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z&index=13\n\nIn this video you'll learn about the compositor, how to create glare, lens distortion and realtime compositing.\n\n===Links🔗===\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 Lighting fixes \n3:21 Introduction to the compositor\n7:06 Color management \"Looks\"\n8:04 AgX\n9:13 Creating glare\n15:03 Realtime compositing\n18:46 Lens Distortion\n19:58 Chromatic Aberration\n21:14 Final node setup\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://www.linkedin.com/in/andrew-price-17678911\nArtStation: https://artstation.com/artist/andrewprice", "Beginner Blender 4.0 Tutorial - Part 11: Compositing", "06e8b06e-72a0-407b-a84e-76fed08b6f8f", "https://www.youtube.com/watch?v=nxrEV-OUTEg", "nxrEV-OUTEg", false, 1315, false, 18, "/downloads/Blender Guru/2023-11-26 Beginner Blender 4.0 Tutorial - Part 11: Compositing/Beginner Blender 4.0 Tutorial - Part 11: Compositing [nxrEV-OUTEg].mp4", false, false, 10, [], 98, ~U[2023-11-26 07:00:20Z], ~U[2025-12-23 21:16:37Z], ~U[2025-12-23 21:16:37Z], "This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nLet's make our donut shine ✨🍩 Watch Part 12: https://www.youtube.com/watch?v=4-tCn4-GfM4&list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z&index=13\n\nIn this video you'll learn about the compositor, how to create glare, lens distortion and realtime compositing.\n\n===Links🔗===\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 Lighting fixes \n3:21 Introduction to the compositor\n7:06 Color management \"Looks\"\n8:04 AgX\n9:13 Creating glare\n15:03 Realtime compositing\n18:46 Lens Distortion\n19:58 Chromatic Aberration\n21:14 Final node setup\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://www.linkedin.com/in/andrew-price-17678911\nArtStation: https://artstation.com/artist/andrewprice", "Beginner Blender 4.0 Tutorial - Part 11: Compositing", "https://www.youtube.com/watch?v=nxrEV-OUTEg", "nxrEV-OUTEg", 1315, false, "/downloads/Blender Guru/2023-11-26 Beginner Blender 4.0 Tutorial - Part 11: Compositing/Beginner Blender 4.0 Tutorial - Part 11: Compositing [nxrEV-OUTEg].mp4", false, 10, ~U[2023-11-26 07:00:20Z]] 21:16:37.703 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 21:16:37.703 [debug] QUERY OK source="media_items" db=0.4ms 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[2023-11-25 07:00:11Z], 10] 21:16:37.705 [debug] QUERY OK source="media_items" db=0.8ms idle=3.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nLet's light that donut 🍩 Part 11: https://www.youtube.com/watch?v=nxrEV-OUTEg&list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z&index=12\n\nIn this video you'll learn about the sun texture light system, snapping, importing models and installing addons.\n\n===Links🔗===\n\nUtensils model: https://www.poliigon.com/model/wooden-utensils-jar-model/3441?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\n\nPoliigon Blender Addon: https://www.poliigon.com/blender?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:57 Using Sky Texture\n3:17 Creating the kitchen enclosure\n5:38 Using the new snapping feature\n8:06 Removing the unneeded faces\n8:53 Creating the window\n9:45 Shaping the light\n10:48 \"Negative\" light\n13:03 Tweaking sun intensity\n14:02 How to import a model\n15:59 Installing an addon\n\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://www.linkedin.com/in/andrew-price-17678911\nArtStation: https://artstation.com/artist/andrewprice", "Beginner Blender 4.0 Tutorial - Part 10: Lighting", "86a7dd51-e49c-4d64-9df6-5ae486c6f552", "https://www.youtube.com/watch?v=KO29y5eW61g", "KO29y5eW61g", false, 1099, false, 19, "/downloads/Blender Guru/2023-11-25 Beginner Blender 4.0 Tutorial - Part 10: Lighting/Beginner Blender 4.0 Tutorial - Part 10: Lighting [KO29y5eW61g].mp4", false, false, 10, [], 98, ~U[2023-11-25 07:00:11Z], ~U[2025-12-23 21:16:37Z], ~U[2025-12-23 21:16:37Z], "This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nLet's light that donut 🍩 Part 11: https://www.youtube.com/watch?v=nxrEV-OUTEg&list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z&index=12\n\nIn this video you'll learn about the sun texture light system, snapping, importing models and installing addons.\n\n===Links🔗===\n\nUtensils model: https://www.poliigon.com/model/wooden-utensils-jar-model/3441?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\n\nPoliigon Blender Addon: https://www.poliigon.com/blender?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 Intro\n0:57 Using Sky Texture\n3:17 Creating the kitchen enclosure\n5:38 Using the new snapping feature\n8:06 Removing the unneeded faces\n8:53 Creating the window\n9:45 Shaping the light\n10:48 \"Negative\" light\n13:03 Tweaking sun intensity\n14:02 How to import a model\n15:59 Installing an addon\n\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://www.linkedin.com/in/andrew-price-17678911\nArtStation: https://artstation.com/artist/andrewprice", "Beginner Blender 4.0 Tutorial - Part 10: Lighting", "https://www.youtube.com/watch?v=KO29y5eW61g", "KO29y5eW61g", 1099, false, "/downloads/Blender Guru/2023-11-25 Beginner Blender 4.0 Tutorial - Part 10: Lighting/Beginner Blender 4.0 Tutorial - Part 10: Lighting [KO29y5eW61g].mp4", false, 10, ~U[2023-11-25 07:00:11Z]] 21:16:37.705 [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" = ?) [10] 21:16:37.706 [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[2023-11-24 07:00:18Z], 10] 21:16:37.707 [debug] QUERY OK source="media_items" db=1.0ms idle=3.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nLet's stage that donut 🍩 Part 10: https://www.youtube.com/watch?v=KO29y5eW61g&list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z&index=11\n\nIn this video you'll learn how to model the plate and stack the donuts.\n\n===Links🔗===\n\nDonate to Blender: https://fund.blender.org/?utm_medium=blenderguru\n\nThe plate model: https://www.poliigon.com/model/ceramic-plate-model-white-with-dark-specks/8110?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 PSA: Donate!\n2:23 Loading a reference image\n3:02 Modelling the plate\n11:38 Shrinking the camera icon\n12:12 Framing the camera \n12:54 Stacking the Donuts\n18:33 Assigning Round and Long sprinkles\n19:27 Trackball rotation\n20:15 Scaling the countertop\n21:07 Making the backsplash\n21:36 New donut icing colors\n24:39 Creating a ceramic plate material\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://www.linkedin.com/in/andrew-price-17678911\nArtStation: https://artstation.com/artist/andrewprice", "Beginner Blender 4.0 Tutorial - Part 9: Layout", "a94a7c58-87ee-4bf8-acaf-957f154f2677", "https://www.youtube.com/watch?v=iv9p3x85Ty0", "iv9p3x85Ty0", false, 1551, false, 20, "/downloads/Blender Guru/2023-11-24 Beginner Blender 4.0 Tutorial - Part 9: Layout/Beginner Blender 4.0 Tutorial - Part 9: Layout [iv9p3x85Ty0].mp4", false, false, 10, [], 98, ~U[2023-11-24 07:00:18Z], ~U[2025-12-23 21:16:37Z], ~U[2025-12-23 21:16:37Z], "This is now outdated! Watch the NEW donut tutorial, remade for Blender 5.0: https://www.youtube.com/watch?v=-tbSCMbJA6o\n\nLet's stage that donut 🍩 Part 10: https://www.youtube.com/watch?v=KO29y5eW61g&list=PLjEaoINr3zgEPv5y--4MKpciLaoQYZB1Z&index=11\n\nIn this video you'll learn how to model the plate and stack the donuts.\n\n===Links🔗===\n\nDonate to Blender: https://fund.blender.org/?utm_medium=blenderguru\n\nThe plate model: https://www.poliigon.com/model/ceramic-plate-model-white-with-dark-specks/8110?utm_campaign=donut4&utm_source=youtube&utm_medium=bg\n\nBlender Guru Discord: https://blenderguru.com/discord\n\nKeyboard Shortcut Cheat Sheet: https://docs.google.com/document/d/1zPBgZAdftWa6WVa7UIFUqW_7EcqOYE0X743RqFuJL3o/edit?usp=sharing\n\nIndustry Compatible Cheat Sheet (not mine, used with permission): https://drive.google.com/file/d/1drO8P6tyz9DaKNGKki2PrIBGpYwIFzU0/view?usp=drive_link\n\nBlender Guru: http://www.blenderguru.com \nPoliigon: https://www.poliigon.com/?utm_campaign=desc&utm_source=youtube&utm_medium=bg\n\n=== Chapter Marks ✂️===\n0:00 PSA: Donate!\n2:23 Loading a reference image\n3:02 Modelling the plate\n11:38 Shrinking the camera icon\n12:12 Framing the camera \n12:54 Stacking the Donuts\n18:33 Assigning Round and Long sprinkles\n19:27 Trackball rotation\n20:15 Scaling the countertop\n21:07 Making the backsplash\n21:36 New donut icing colors\n24:39 Creating a ceramic plate material\n\n===Follow me🫰===\n\nhttps://twitter.com/andrewpprice\nhttps://instagram.com/andrewpprice\nhttps://www.linkedin.com/in/andrew-price-17678911\nArtStation: https://artstation.com/artist/andrewprice", "Beginner Blender 4.0 Tutorial - Part 9: Layout", "https://www.youtube.com/watch?v=iv9p3x85Ty0", "iv9p3x85Ty0", 1551, false, "/downloads/Blender Guru/2023-11-24 Beginner Blender 4.0 Tutorial - Part 9: Layout/Beginner Blender 4.0 Tutorial - Part 9: Layout [iv9p3x85Ty0].mp4", false, 10, ~U[2023-11-24 07:00:18Z]] 21:16:37.708 [debug] QUERY OK source="sources" db=0.2ms idle=4.0ms UPDATE "sources" SET "last_indexed_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2025-12-23 21:16:37Z], ~U[2025-12-23 21:16:37Z], 10] 21:16:37.708 [debug] QUERY OK source="media_items" db=0.5ms 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 ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [10] 21:16:37.709 [debug] QUERY OK source="media_items" db=0.4ms idle=3.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")))) [10] 21:16:37.710 [debug] QUERY OK source="media_items" db=0.2ms idle=3.5ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [10] 21:16:37.711 [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" [7410, 10, ~U[2025-12-23 21:16:37Z], ~U[2025-12-23 21:16:37Z]] 21:16:37.711 [info] {"args":{"id":10},"id":7394,"meta":{},"state":"success","max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","duration":46872326,"event":"job:stop","queue_time":704681,"attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 21:16:48.938 [info] {"source":"oban","duration":1795,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:17:00.742 [info] {"source":"oban","duration":525,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:17:18.941 [info] {"source":"oban","duration":1611,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:17:48.944 [info] {"source":"oban","duration":1918,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:18:00.743 [info] {"source":"oban","duration":341,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:18:18.946 [info] {"source":"oban","duration":1494,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:18:48.948 [info] {"source":"oban","duration":1347,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:19:00.745 [info] {"source":"oban","duration":496,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:19:18.950 [info] {"source":"oban","duration":937,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:19:48.952 [info] {"source":"oban","duration":1168,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:20:00.747 [info] {"source":"oban","duration":457,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:20:18.954 [info] {"source":"oban","duration":927,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:20:48.956 [info] {"source":"oban","duration":1346,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:21:00.748 [info] {"source":"oban","duration":365,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:21:11.512 [info] {"args":{"id":23904},"id":7407,"meta":{},"system_time":1766524871512376471,"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"]} 21:21:11.512 [debug] QUERY OK source="media_items" db=0.1ms idle=1504.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" = ?) [23904] 21:21:11.513 [info] User scripts lifecyle file either not present or is empty. Skipping. 21:21:11.513 [debug] QUERY OK source="sources" db=0.1ms idle=1505.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 21:21:11.513 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 21:21:11.514 [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 [23904] 21:21:11.537 [debug] QUERY OK source="media_metadata" db=0.1ms idle=24.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" = ?) [23904] 21:21:11.537 [debug] QUERY OK source="media_profiles" db=0.1ms idle=24.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] 21:21:11.538 [debug] QUERY OK source="settings" db=0.1ms idle=24.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:21:11.538 [debug] QUERY OK source="settings" db=0.1ms idle=24.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:21:11.538 [debug] Running yt-dlp command for action: get_downloadable_status 21:21:11.550 [debug] QUERY OK source="settings" db=0.2ms idle=36.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:21:11.550 [debug] QUERY OK source="settings" db=0.1ms idle=13.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:21:11.551 [debug] QUERY OK source="settings" db=0.1ms idle=13.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:21:11.551 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d0/f5/d0f53074e57c2adc6b8373ca249a0cbe04cdc72a2810c39ccff8cb2909dd0779.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 21:21:14.526 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/d0/f5/d0f53074e57c2adc6b8373ca249a0cbe04cdc72a2810c39ccff8cb2909dd0779.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: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 21:21:14.526 [debug] Running yt-dlp command for action: download 21:21:14.526 [debug] QUERY OK source="settings" db=0.1ms idle=1518.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:21:14.527 [debug] QUERY OK source="settings" db=0.1ms idle=1519.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:21:14.527 [debug] QUERY OK source="settings" db=0.2ms idle=1519.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:21:14.527 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/c9/8a/c98a90c1619194309456149c491edb8be63727101d42de945fc2daf37d8c407a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 21:21:17.945 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/c9/8a/c98a90c1619194309456149c491edb8be63727101d42de945fc2daf37d8c407a.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 WARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 21:21:17.945 [error] yt-dlp download error for media item #23904: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 21:21:17.946 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23904},"id":7407,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6433626,"event":"job:exception","queue_time":803006,"attempt":10,"tags":["media_item","media_fetching","show_in_dashboard"]} 21:21:18.958 [info] {"source":"oban","duration":1119,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:21:48.960 [info] {"source":"oban","duration":883,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:22:00.750 [info] {"source":"oban","duration":1087,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:22:18.962 [info] {"source":"oban","duration":784,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:22:48.964 [info] {"source":"oban","duration":790,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:23:00.752 [info] {"source":"oban","duration":743,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:23:18.966 [info] {"source":"oban","duration":792,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:23:48.968 [info] {"source":"oban","duration":966,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:24:00.754 [info] {"source":"oban","duration":836,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:24:18.970 [info] {"source":"oban","duration":762,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:24:48.972 [info] {"source":"oban","duration":1352,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:25:00.756 [info] {"source":"oban","duration":631,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:25:18.974 [info] {"source":"oban","duration":1045,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:25:48.977 [info] {"source":"oban","duration":1175,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:26:00.758 [info] {"source":"oban","duration":487,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:26:18.979 [info] {"source":"oban","duration":1032,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:26:48.981 [info] {"source":"oban","duration":1346,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:27:00.760 [info] {"source":"oban","duration":656,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:27:18.983 [info] {"source":"oban","duration":1041,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:27:48.985 [info] {"source":"oban","duration":1019,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:28:00.762 [info] {"source":"oban","duration":428,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:28:18.987 [info] {"source":"oban","duration":975,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:28:48.989 [info] {"source":"oban","duration":881,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:29:00.763 [info] {"source":"oban","duration":498,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:29:18.991 [info] {"source":"oban","duration":1336,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:29:48.993 [info] {"source":"oban","duration":991,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:30:00.765 [info] {"source":"oban","duration":431,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:30:18.996 [info] {"source":"oban","duration":1985,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:30:48.998 [info] {"source":"oban","duration":942,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:31:00.766 [info] {"source":"oban","duration":744,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:31:19.000 [info] {"source":"oban","duration":1289,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:31:49.002 [info] {"source":"oban","duration":752,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:32:00.768 [info] {"source":"oban","duration":440,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:32:19.002 [info] {"source":"oban","duration":621,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:32:49.004 [info] {"source":"oban","duration":820,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:33:00.770 [info] {"source":"oban","duration":660,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:33:19.006 [info] {"source":"oban","duration":1388,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:33:49.008 [info] {"source":"oban","duration":1302,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:34:00.771 [info] {"source":"oban","duration":811,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:34:19.010 [info] {"source":"oban","duration":906,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:34:49.013 [info] {"source":"oban","duration":1730,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:35:00.773 [info] {"source":"oban","duration":525,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:35:19.016 [info] {"source":"oban","duration":1724,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:35:49.019 [info] {"source":"oban","duration":1627,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:36:00.775 [info] {"source":"oban","duration":747,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:36:19.021 [info] {"source":"oban","duration":829,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:36:49.023 [info] {"source":"oban","duration":1100,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:37:00.776 [info] {"source":"oban","duration":300,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:37:19.025 [info] {"source":"oban","duration":1009,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:37:49.027 [info] {"source":"oban","duration":1322,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:38:00.778 [info] {"source":"oban","duration":485,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:38:19.029 [info] {"source":"oban","duration":1425,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:38:49.032 [info] {"source":"oban","duration":1796,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:39:00.780 [info] {"source":"oban","duration":458,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:39:12.736 [info] {"args":{"id":23904},"id":7407,"meta":{},"system_time":1766525952736652031,"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"]} 21:39:12.737 [debug] QUERY OK source="media_items" db=0.3ms idle=1729.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" = ?) [23904] 21:39:12.737 [info] User scripts lifecyle file either not present or is empty. Skipping. 21:39:12.738 [debug] QUERY OK source="sources" db=0.2ms idle=1010.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 21:39:12.738 [debug] QUERY OK source="media_profiles" db=0.2ms idle=730.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] 21:39:12.739 [debug] QUERY OK source="media_items" db=0.3ms 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 [23904] 21:39:12.739 [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" = ?) [23904] 21:39:12.740 [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] 21:39:12.740 [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 [] 21:39:12.741 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:39:12.741 [debug] Running yt-dlp command for action: get_downloadable_status 21:39:12.742 [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 [] 21:39:12.742 [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 [] 21:39:12.742 [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 [] 21:39:12.742 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a8/74/a87454860b403ebb18cebd274be9a3496433a9b7b0c184957d3a4c703aa43f66.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 21:39:15.716 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a8/74/a87454860b403ebb18cebd274be9a3496433a9b7b0c184957d3a4c703aa43f66.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: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 21:39:15.717 [debug] Running yt-dlp command for action: download 21:39:15.717 [debug] QUERY OK source="settings" db=0.4ms idle=1709.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:39:15.717 [debug] QUERY OK source="settings" db=0.1ms idle=1710.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 21:39:15.718 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=1710.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:39:15.718 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/9e/22/9e22287959d8b112a7120a60eddcca36649002582991e2a7db00a4a49cb1eaab.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 21:39:19.034 [info] {"source":"oban","duration":1041,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:39:19.066 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/9e/22/9e22287959d8b112a7120a60eddcca36649002582991e2a7db00a4a49cb1eaab.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 WARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 21:39:19.066 [error] yt-dlp download error for media item #23904: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 21:39:19.067 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23904},"id":7407,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6329914,"event":"job:exception","queue_time":789158,"attempt":11,"tags":["media_item","media_fetching","show_in_dashboard"]} 21:39:49.036 [info] {"source":"oban","duration":899,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:40:00.782 [info] {"source":"oban","duration":688,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:40:19.038 [info] {"source":"oban","duration":1289,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:40:49.040 [info] {"source":"oban","duration":955,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:41:00.783 [info] {"source":"oban","duration":469,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:41:19.041 [info] {"source":"oban","duration":693,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:41:49.043 [info] {"source":"oban","duration":1623,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:42:00.785 [info] {"source":"oban","duration":425,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:42:19.045 [info] {"source":"oban","duration":853,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:42:49.047 [info] {"source":"oban","duration":1500,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:43:00.786 [info] {"source":"oban","duration":293,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:43:19.049 [info] {"source":"oban","duration":843,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:43:49.051 [info] {"source":"oban","duration":909,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:44:00.787 [info] {"source":"oban","duration":286,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:44:19.053 [info] {"source":"oban","duration":1375,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:44:49.055 [info] {"source":"oban","duration":798,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:45:00.789 [info] {"source":"oban","duration":402,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:45:19.057 [info] {"source":"oban","duration":1350,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:45:49.060 [info] {"source":"oban","duration":1804,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:46:00.791 [info] {"source":"oban","duration":654,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:46:19.062 [info] {"source":"oban","duration":1556,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:46:49.064 [info] {"source":"oban","duration":855,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:47:00.793 [info] {"source":"oban","duration":678,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:47:19.066 [info] {"source":"oban","duration":1179,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:47:49.068 [info] {"source":"oban","duration":1072,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:48:00.795 [info] {"source":"oban","duration":714,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:48:19.071 [info] {"source":"oban","duration":1646,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:48:49.073 [info] {"source":"oban","duration":1220,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:49:00.796 [info] {"source":"oban","duration":301,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:49:19.075 [info] {"source":"oban","duration":967,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:49:49.077 [info] {"source":"oban","duration":1083,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:50:00.797 [info] {"source":"oban","duration":363,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:50:19.079 [info] {"source":"oban","duration":1201,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:50:49.081 [info] {"source":"oban","duration":825,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:51:00.799 [info] {"source":"oban","duration":474,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:51:19.083 [info] {"source":"oban","duration":1102,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:51:49.085 [info] {"source":"oban","duration":1048,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:52:00.801 [info] {"source":"oban","duration":916,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:52:19.088 [info] {"source":"oban","duration":1803,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:52:49.090 [info] {"source":"oban","duration":1538,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:53:00.803 [info] {"source":"oban","duration":459,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:53:19.092 [info] {"source":"oban","duration":1002,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:53:49.094 [info] {"source":"oban","duration":1136,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:54:00.805 [info] {"source":"oban","duration":247,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:54:19.097 [info] {"source":"oban","duration":1449,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:54:49.099 [info] {"source":"oban","duration":1525,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:55:00.807 [info] {"source":"oban","duration":386,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:55:19.102 [info] {"source":"oban","duration":1392,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:55:49.104 [info] {"source":"oban","duration":1057,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:56:00.808 [info] {"source":"oban","duration":325,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:56:19.105 [info] {"source":"oban","duration":662,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:56:49.108 [info] {"source":"oban","duration":1687,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:57:00.810 [info] {"source":"oban","duration":707,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:57:19.110 [info] {"source":"oban","duration":909,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:57:49.112 [info] {"source":"oban","duration":1207,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:58:00.812 [info] {"source":"oban","duration":581,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:58:19.114 [info] {"source":"oban","duration":1417,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:58:49.116 [info] {"source":"oban","duration":1012,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:59:00.814 [info] {"source":"oban","duration":504,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 21:59:19.119 [info] {"source":"oban","duration":1159,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 21:59:49.121 [info] {"source":"oban","duration":1703,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:00:00.816 [info] {"source":"oban","duration":1296,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:00:19.123 [info] {"source":"oban","duration":780,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:00:49.125 [info] {"source":"oban","duration":940,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:01:00.817 [info] {"source":"oban","duration":436,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:01:19.127 [info] {"source":"oban","duration":1069,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:01:49.129 [info] {"source":"oban","duration":1482,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:02:00.818 [info] {"source":"oban","duration":259,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:02:19.131 [info] {"source":"oban","duration":779,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:02:49.133 [info] {"source":"oban","duration":718,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:03:00.820 [info] {"source":"oban","duration":407,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:03:19.135 [info] {"source":"oban","duration":1334,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:03:49.137 [info] {"source":"oban","duration":1347,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:04:00.822 [info] {"source":"oban","duration":513,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:04:19.140 [info] {"source":"oban","duration":1345,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:04:49.142 [info] {"source":"oban","duration":991,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:05:00.824 [info] {"source":"oban","duration":458,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:05:19.144 [info] {"source":"oban","duration":1168,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:05:49.146 [info] {"source":"oban","duration":957,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:06:00.825 [info] {"source":"oban","duration":283,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:06:19.148 [info] {"source":"oban","duration":703,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:06:49.150 [info] {"source":"oban","duration":1571,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:07:00.826 [info] {"source":"oban","duration":406,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:07:19.152 [info] {"source":"oban","duration":1174,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:07:49.155 [info] {"source":"oban","duration":2036,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:08:00.828 [info] {"source":"oban","duration":405,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:08:19.157 [info] {"source":"oban","duration":804,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:08:49.160 [info] {"source":"oban","duration":1792,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:09:00.829 [info] {"source":"oban","duration":319,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:09:19.162 [info] {"source":"oban","duration":1138,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:09:49.164 [info] {"source":"oban","duration":836,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:10:00.830 [info] {"source":"oban","duration":257,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:10:19.167 [info] {"source":"oban","duration":1100,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:10:49.169 [info] {"source":"oban","duration":1093,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:11:00.831 [info] {"source":"oban","duration":262,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:11:19.171 [info] {"source":"oban","duration":1038,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:11:49.173 [info] {"source":"oban","duration":1544,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:12:00.833 [info] {"source":"oban","duration":526,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:12:19.175 [info] {"source":"oban","duration":921,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:12:49.177 [info] {"source":"oban","duration":1313,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:13:00.835 [info] {"source":"oban","duration":278,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:13:19.179 [info] {"source":"oban","duration":1008,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:13:49.181 [info] {"source":"oban","duration":1518,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:14:00.836 [info] {"source":"oban","duration":343,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:14:19.184 [info] {"source":"oban","duration":1312,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:14:49.187 [info] {"source":"oban","duration":1242,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:15:00.837 [info] {"source":"oban","duration":417,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:15:19.189 [info] {"source":"oban","duration":1130,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:15:49.191 [info] {"source":"oban","duration":1273,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:16:00.838 [info] {"source":"oban","duration":484,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:16:19.193 [info] {"source":"oban","duration":1083,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:16:20.373 [info] {"args":{"id":23904},"id":7407,"meta":{},"system_time":1766528180372947636,"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"]} 22:16:20.373 [debug] QUERY OK source="media_items" db=0.2ms idle=1364.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" = ?) [23904] 22:16:20.373 [info] User scripts lifecyle file either not present or is empty. Skipping. 22:16:20.374 [debug] QUERY OK source="sources" db=0.2ms idle=1180.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 22:16:20.374 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1010.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] 22:16:20.374 [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 [23904] 22:16:20.375 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [23904] 22:16:20.375 [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] 22:16:20.376 [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 [] 22:16:20.376 [debug] QUERY OK source="settings" db=0.2ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 22:16:20.377 [debug] Running yt-dlp command for action: get_downloadable_status 22:16:20.403 [debug] QUERY OK source="settings" db=0.2ms idle=27.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:16:20.403 [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 [] 22:16:20.403 [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 [] 22:16:20.403 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c9/93/c993a50b2d0d6dccfc5c9fea3f8ca5e48f009efccad9e63efb576857e890b60e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 22:16:23.017 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c9/93/c993a50b2d0d6dccfc5c9fea3f8ca5e48f009efccad9e63efb576857e890b60e.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: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 22:16:23.017 [debug] Running yt-dlp command for action: download 22:16:23.018 [debug] QUERY OK source="settings" db=0.2ms 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 [] 22:16:23.018 [debug] QUERY OK source="settings" db=0.1ms 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 [] 22:16:23.018 [debug] QUERY OK source="settings" db=0.2ms idle=1010.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:16:23.019 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/ea/32/ea3269ce2498997f9495846ca16914bd86b05dfc719b909257bf870229ab15d0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 22:16:26.207 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/ea/32/ea3269ce2498997f9495846ca16914bd86b05dfc719b909257bf870229ab15d0.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 WARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 22:16:26.207 [error] yt-dlp download error for media item #23904: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 22:16:26.208 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23904},"id":7407,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":5834427,"event":"job:exception","queue_time":304711,"attempt":12,"tags":["media_item","media_fetching","show_in_dashboard"]} 22:16:49.196 [info] {"source":"oban","duration":1919,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:17:00.840 [info] {"source":"oban","duration":460,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:17:19.198 [info] {"source":"oban","duration":1058,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:17:49.200 [info] {"source":"oban","duration":1369,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:18:00.841 [info] {"source":"oban","duration":382,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:18:19.203 [info] {"source":"oban","duration":1803,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:18:49.206 [info] {"source":"oban","duration":1641,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:19:00.842 [info] {"source":"oban","duration":424,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:19:19.207 [info] {"source":"oban","duration":913,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:19:49.208 [info] {"source":"oban","duration":718,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:20:00.843 [info] {"source":"oban","duration":405,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:20:19.210 [info] {"source":"oban","duration":919,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:20:49.213 [info] {"source":"oban","duration":1728,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:21:00.844 [info] {"source":"oban","duration":423,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:21:19.215 [info] {"source":"oban","duration":1525,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:21:49.217 [info] {"source":"oban","duration":1005,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:22:00.846 [info] {"source":"oban","duration":754,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:22:19.219 [info] {"source":"oban","duration":1395,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:22:49.222 [info] {"source":"oban","duration":1665,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:23:00.848 [info] {"source":"oban","duration":849,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:23:19.223 [info] {"source":"oban","duration":1362,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:23:49.225 [info] {"source":"oban","duration":1454,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:24:00.849 [info] {"source":"oban","duration":572,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:24:19.227 [info] {"source":"oban","duration":998,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:24:49.229 [info] {"source":"oban","duration":1212,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:25:00.851 [info] {"source":"oban","duration":536,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:25:19.231 [info] {"source":"oban","duration":1625,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:25:49.233 [info] {"source":"oban","duration":1318,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:26:00.852 [info] {"source":"oban","duration":278,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:26:19.235 [info] {"source":"oban","duration":1243,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:26:49.237 [info] {"source":"oban","duration":1115,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:27:00.853 [info] {"source":"oban","duration":273,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:27:19.240 [info] {"source":"oban","duration":1891,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:27:49.242 [info] {"source":"oban","duration":1276,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:28:00.854 [info] {"source":"oban","duration":307,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:28:19.244 [info] {"source":"oban","duration":1366,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:28:49.246 [info] {"source":"oban","duration":1179,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:29:00.855 [info] {"source":"oban","duration":364,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:29:19.247 [info] {"source":"oban","duration":683,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:29:49.249 [info] {"source":"oban","duration":1365,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:30:00.857 [info] {"source":"oban","duration":645,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:30:19.250 [info] {"source":"oban","duration":776,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:30:49.252 [info] {"source":"oban","duration":1062,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:31:00.859 [info] {"source":"oban","duration":1144,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:31:19.253 [info] {"source":"oban","duration":707,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:31:49.255 [info] {"source":"oban","duration":942,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:32:00.861 [info] {"source":"oban","duration":917,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:32:19.257 [info] {"source":"oban","duration":1370,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:32:49.259 [info] {"source":"oban","duration":1243,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:33:00.862 [info] {"source":"oban","duration":448,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:33:19.261 [info] {"source":"oban","duration":1052,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:33:49.263 [info] {"source":"oban","duration":1256,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:34:00.863 [info] {"source":"oban","duration":352,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:34:19.265 [info] {"source":"oban","duration":1126,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:34:49.267 [info] {"source":"oban","duration":690,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:35:00.865 [info] {"source":"oban","duration":1102,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:35:19.268 [info] {"source":"oban","duration":1052,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:35:49.270 [info] {"source":"oban","duration":1099,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:36:00.866 [info] {"source":"oban","duration":296,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:36:19.272 [info] {"source":"oban","duration":716,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:36:49.274 [info] {"source":"oban","duration":1485,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:37:00.868 [info] {"source":"oban","duration":510,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:37:19.276 [info] {"source":"oban","duration":1060,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:37:49.278 [info] {"source":"oban","duration":1256,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:38:00.870 [info] {"source":"oban","duration":678,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:38:19.280 [info] {"source":"oban","duration":956,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:38:49.282 [info] {"source":"oban","duration":1698,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:39:00.871 [info] {"source":"oban","duration":453,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:39:19.285 [info] {"source":"oban","duration":1716,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:39:49.287 [info] {"source":"oban","duration":1395,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:40:00.872 [info] {"source":"oban","duration":422,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:40:19.290 [info] {"source":"oban","duration":1757,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:40:49.292 [info] {"source":"oban","duration":1124,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:41:00.873 [info] {"source":"oban","duration":393,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:41:19.294 [info] {"source":"oban","duration":1490,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:41:49.296 [info] {"source":"oban","duration":1231,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:42:00.875 [info] {"source":"oban","duration":912,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:42:19.299 [info] {"source":"oban","duration":1743,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:42:49.301 [info] {"source":"oban","duration":1465,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:43:00.876 [info] {"source":"oban","duration":243,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:43:19.303 [info] {"source":"oban","duration":1361,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:43:49.305 [info] {"source":"oban","duration":1416,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:44:00.877 [info] {"source":"oban","duration":356,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:44:19.307 [info] {"source":"oban","duration":1278,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:44:49.309 [info] {"source":"oban","duration":1436,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:45:00.879 [info] {"source":"oban","duration":597,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:45:19.311 [info] {"source":"oban","duration":1332,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:45:49.313 [info] {"source":"oban","duration":1624,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:46:00.880 [info] {"source":"oban","duration":439,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:46:19.315 [info] {"source":"oban","duration":1377,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:46:49.318 [info] {"source":"oban","duration":2052,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:47:00.882 [info] {"source":"oban","duration":574,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:47:19.320 [info] {"source":"oban","duration":837,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:47:49.323 [info] {"source":"oban","duration":1815,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:48:00.883 [info] {"source":"oban","duration":529,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:48:19.325 [info] {"source":"oban","duration":887,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:48:49.327 [info] {"source":"oban","duration":784,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:49:00.884 [info] {"source":"oban","duration":323,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:49:19.329 [info] {"source":"oban","duration":989,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:49:49.331 [info] {"source":"oban","duration":1219,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:50:00.885 [info] {"source":"oban","duration":485,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:50:19.333 [info] {"source":"oban","duration":1195,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:50:49.335 [info] {"source":"oban","duration":1334,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:51:00.886 [info] {"source":"oban","duration":230,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:51:19.337 [info] {"source":"oban","duration":1261,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:51:49.339 [info] {"source":"oban","duration":1606,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:52:00.888 [info] {"source":"oban","duration":662,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:52:19.341 [info] {"source":"oban","duration":1140,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:52:49.342 [info] {"source":"oban","duration":587,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:53:00.889 [info] {"source":"oban","duration":297,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:53:19.344 [info] {"source":"oban","duration":951,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:53:49.346 [info] {"source":"oban","duration":1482,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:54:00.890 [info] {"source":"oban","duration":622,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:54:19.348 [info] {"source":"oban","duration":1410,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:54:49.350 [info] {"source":"oban","duration":1278,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:55:00.891 [info] {"source":"oban","duration":253,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:55:19.352 [info] {"source":"oban","duration":1296,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:55:49.354 [info] {"source":"oban","duration":1162,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:56:00.892 [info] {"source":"oban","duration":437,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:56:19.356 [info] {"source":"oban","duration":1552,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:56:49.358 [info] {"source":"oban","duration":1490,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:57:00.894 [info] {"source":"oban","duration":1151,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:57:19.360 [info] {"source":"oban","duration":1225,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:57:49.363 [info] {"source":"oban","duration":1667,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:58:00.895 [info] {"source":"oban","duration":630,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:58:19.365 [info] {"source":"oban","duration":1076,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:58:49.367 [info] {"source":"oban","duration":1283,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:59:00.897 [info] {"source":"oban","duration":819,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 22:59:19.369 [info] {"source":"oban","duration":1046,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 22:59:49.371 [info] {"source":"oban","duration":1128,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:00:00.899 [info] {"source":"oban","duration":856,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:00:19.374 [info] {"source":"oban","duration":1386,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:00:49.375 [info] {"source":"oban","duration":1394,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:01:00.901 [info] {"source":"oban","duration":953,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:01:19.377 [info] {"source":"oban","duration":707,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:01:49.378 [info] {"source":"oban","duration":979,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:02:00.903 [info] {"source":"oban","duration":313,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:02:19.380 [info] {"source":"oban","duration":1634,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:02:49.382 [info] {"source":"oban","duration":963,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:03:00.905 [info] {"source":"oban","duration":386,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:03:19.384 [info] {"source":"oban","duration":933,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:03:49.386 [info] {"source":"oban","duration":1646,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:04:00.907 [info] {"source":"oban","duration":420,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:04:19.388 [info] {"source":"oban","duration":1187,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:04:49.391 [info] {"source":"oban","duration":1636,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:05:00.908 [info] {"source":"oban","duration":360,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:05:19.394 [info] {"source":"oban","duration":1880,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:05:49.397 [info] {"source":"oban","duration":1752,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:06:00.909 [info] {"source":"oban","duration":437,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:06:19.399 [info] {"source":"oban","duration":1342,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:06:49.401 [info] {"source":"oban","duration":754,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:07:00.911 [info] {"source":"oban","duration":448,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:07:19.403 [info] {"source":"oban","duration":1302,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:07:49.406 [info] {"source":"oban","duration":1683,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:08:00.913 [info] {"source":"oban","duration":785,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:08:19.408 [info] {"source":"oban","duration":1064,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:08:49.410 [info] {"source":"oban","duration":1357,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:09:00.915 [info] {"source":"oban","duration":991,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:09:19.413 [info] {"source":"oban","duration":2008,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:09:49.415 [info] {"source":"oban","duration":1327,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:10:00.917 [info] {"source":"oban","duration":723,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:10:19.417 [info] {"source":"oban","duration":1253,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:10:49.419 [info] {"source":"oban","duration":1578,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:11:00.918 [info] {"source":"oban","duration":478,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:11:19.421 [info] {"source":"oban","duration":1021,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:11:49.423 [info] {"source":"oban","duration":1130,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:12:00.919 [info] {"source":"oban","duration":358,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:12:19.425 [info] {"source":"oban","duration":1313,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:12:49.427 [info] {"source":"oban","duration":1276,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:13:00.921 [info] {"source":"oban","duration":590,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:13:19.429 [info] {"source":"oban","duration":1568,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:13:49.431 [info] {"source":"oban","duration":1489,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:14:00.923 [info] {"source":"oban","duration":717,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:14:19.433 [info] {"source":"oban","duration":850,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:14:49.435 [info] {"source":"oban","duration":842,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:15:00.923 [info] {"source":"oban","duration":451,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:15:19.438 [info] {"source":"oban","duration":1861,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:15:49.440 [info] {"source":"oban","duration":977,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:16:00.925 [info] {"source":"oban","duration":573,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:16:19.443 [info] {"source":"oban","duration":1605,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:16:49.444 [info] {"source":"oban","duration":939,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:17:00.927 [info] {"source":"oban","duration":640,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:17:19.446 [info] {"source":"oban","duration":1068,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:17:49.449 [info] {"source":"oban","duration":1693,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:18:00.929 [info] {"source":"oban","duration":774,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:18:19.451 [info] {"source":"oban","duration":1040,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:18:49.453 [info] {"source":"oban","duration":1413,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:19:00.931 [info] {"source":"oban","duration":569,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:19:19.455 [info] {"source":"oban","duration":1183,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:19:49.457 [info] {"source":"oban","duration":879,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:20:00.932 [info] {"source":"oban","duration":550,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:20:19.459 [info] {"source":"oban","duration":1639,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:20:49.461 [info] {"source":"oban","duration":1322,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:21:00.934 [info] {"source":"oban","duration":631,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:21:19.463 [info] {"source":"oban","duration":1064,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:21:49.465 [info] {"source":"oban","duration":1039,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:21:52.648 [info] {"args":{"id":19395},"id":7182,"meta":{},"system_time":1766532112648122095,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":20,"tags":["media_item","media_fetching","show_in_dashboard"]} 23:21:52.648 [debug] QUERY OK source="media_items" db=0.1ms idle=1630.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" = ?) [19395] 23:21:52.648 [info] User scripts lifecyle file either not present or is empty. Skipping. 23:21:52.649 [debug] QUERY OK source="sources" db=0.2ms idle=1630.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] 23:21:52.649 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=1010.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 23:21:52.650 [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 [19395] 23:21:52.669 [debug] QUERY OK source="media_metadata" db=0.0ms idle=21.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" = ?) [19395] 23:21:52.669 [debug] QUERY OK source="media_profiles" db=0.2ms idle=20.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 23:21:52.670 [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 [] 23:21:52.670 [debug] QUERY OK source="settings" db=0.1ms idle=20.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 23:21:52.671 [debug] Running yt-dlp command for action: get_downloadable_status 23:21:52.671 [debug] QUERY OK source="settings" db=0.0ms idle=21.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 23:21:52.671 [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 [] 23:21:52.672 [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 [] 23:21:52.672 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/db/6a/db6a87ee4b1d68c5ecef5e607bd93702bc552de09add092226742e44df785888.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 23:21:55.629 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/db/6a/db6a87ee4b1d68c5ecef5e607bd93702bc552de09add092226742e44df785888.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: [youtube] 3OK8Z2sl5wA: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 3OK8Z2sl5wA: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 23:21:55.629 [debug] Running yt-dlp command for action: download 23:21:55.629 [debug] QUERY OK source="settings" db=0.2ms idle=1611.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:21:55.630 [debug] QUERY OK source="settings" db=0.1ms idle=1611.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:21:55.630 [debug] QUERY OK source="settings" db=0.1ms idle=1611.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:21:55.630 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/3e/6c3e78af719ce1a15cbd607912265e3bfca6d274f2db2ec5aa913195a5e63f0e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 23:21:58.630 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/3e/6c3e78af719ce1a15cbd607912265e3bfca6d274f2db2ec5aa913195a5e63f0e.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 WARNING: [youtube] 3OK8Z2sl5wA: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 3OK8Z2sl5wA: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 23:21:58.630 [error] yt-dlp download error for media item #19395: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] 3OK8Z2sl5wA: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] 3OK8Z2sl5wA: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 23:21:58.631 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":19395},"id":7182,"meta":{},"state":"discard","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":5983020,"event":"job:exception","queue_time":404624,"attempt":20,"tags":["media_item","media_fetching","show_in_dashboard"]} 23:22:00.935 [info] {"source":"oban","duration":401,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:22:19.467 [info] {"source":"oban","duration":1481,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:22:49.469 [info] {"source":"oban","duration":1594,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:23:00.937 [info] {"source":"oban","duration":721,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:23:19.471 [info] {"source":"oban","duration":1336,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:23:49.473 [info] {"source":"oban","duration":1540,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:24:00.939 [info] {"source":"oban","duration":443,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:24:19.475 [info] {"source":"oban","duration":1325,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:24:49.477 [info] {"source":"oban","duration":1435,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:25:00.941 [info] {"source":"oban","duration":1030,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:25:19.479 [info] {"source":"oban","duration":1072,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:25:49.480 [info] {"source":"oban","duration":678,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:26:00.942 [info] {"source":"oban","duration":383,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:26:19.482 [info] {"source":"oban","duration":1092,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:26:49.484 [info] {"source":"oban","duration":1450,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:27:00.943 [info] {"source":"oban","duration":533,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:27:19.486 [info] {"source":"oban","duration":1125,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:27:49.488 [info] {"source":"oban","duration":1037,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:28:00.944 [info] {"source":"oban","duration":394,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:28:19.490 [info] {"source":"oban","duration":1268,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:28:49.492 [info] {"source":"oban","duration":1708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:29:00.946 [info] {"source":"oban","duration":1145,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:29:19.494 [info] {"source":"oban","duration":1683,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:29:49.496 [info] {"source":"oban","duration":737,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:30:00.948 [info] {"source":"oban","duration":528,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:30:19.497 [info] {"source":"oban","duration":1025,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:30:49.500 [info] {"source":"oban","duration":1755,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:31:00.950 [info] {"source":"oban","duration":399,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:31:01.806 [info] {"args":{"id":23904},"id":7407,"meta":{},"system_time":1766532661806527647,"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"]} 23:31:01.807 [debug] QUERY OK source="media_items" db=0.2ms idle=787.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" = ?) [23904] 23:31:01.807 [info] User scripts lifecyle file either not present or is empty. Skipping. 23:31:01.807 [debug] QUERY OK source="sources" db=0.3ms idle=788.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 23:31:01.808 [debug] QUERY OK source="media_profiles" db=0.2ms idle=788.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 23:31:01.808 [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 [23904] 23:31:01.809 [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" = ?) [23904] 23:31:01.809 [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] 23:31:01.809 [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 [] 23:31:01.810 [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 [] 23:31:01.810 [debug] Running yt-dlp command for action: get_downloadable_status 23:31:01.831 [debug] QUERY OK source="settings" db=0.2ms 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 [] 23:31:01.832 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=22.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:31:01.832 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms 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 [] 23:31:01.832 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/61/c9/61c932b608235396ece733d83db707d21464c0cd5e7726ff836f725ce382e65a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 23:31:04.549 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/61/c9/61c932b608235396ece733d83db707d21464c0cd5e7726ff836f725ce382e65a.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: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 23:31:04.550 [debug] Running yt-dlp command for action: download 23:31:04.550 [debug] QUERY OK source="settings" db=0.2ms idle=1531.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:31:04.551 [debug] QUERY OK source="settings" db=0.1ms idle=1532.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:31:04.551 [debug] QUERY OK source="settings" db=0.1ms idle=1532.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:31:04.551 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/a7/d5/a7d5cca6eb0c93e81efaee124d3c3c9e61db5fac67446de34270f4bdf7d7e758.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 23:31:07.433 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/a7/d5/a7d5cca6eb0c93e81efaee124d3c3c9e61db5fac67446de34270f4bdf7d7e758.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 WARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 23:31:07.433 [error] yt-dlp download error for media item #23904: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 23:31:07.434 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23904},"id":7407,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":5627583,"event":"job:exception","queue_time":597853,"attempt":13,"tags":["media_item","media_fetching","show_in_dashboard"]} 23:31:19.502 [info] {"source":"oban","duration":1522,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:31:49.504 [info] {"source":"oban","duration":1684,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:32:00.952 [info] {"source":"oban","duration":454,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:32:19.506 [info] {"source":"oban","duration":1378,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:32:49.508 [info] {"source":"oban","duration":1010,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:33:00.953 [info] {"source":"oban","duration":360,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:33:19.510 [info] {"source":"oban","duration":1052,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:33:49.512 [info] {"source":"oban","duration":1129,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:34:00.954 [info] {"source":"oban","duration":326,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:34:19.514 [info] {"source":"oban","duration":1558,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:34:49.517 [info] {"source":"oban","duration":1648,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:35:00.955 [info] {"source":"oban","duration":386,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:35:19.519 [info] {"source":"oban","duration":894,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:35:49.522 [info] {"source":"oban","duration":1754,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:36:00.957 [info] {"source":"oban","duration":726,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:36:19.523 [info] {"source":"oban","duration":845,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:36:49.524 [info] {"source":"oban","duration":632,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:37:00.959 [info] {"source":"oban","duration":607,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:37:19.526 [info] {"source":"oban","duration":803,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:37:49.528 [info] {"source":"oban","duration":1317,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:38:00.960 [info] {"source":"oban","duration":439,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:38:19.530 [info] {"source":"oban","duration":924,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:38:49.532 [info] {"source":"oban","duration":1279,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:39:00.961 [info] {"source":"oban","duration":363,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:39:19.534 [info] {"source":"oban","duration":830,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:39:49.537 [info] {"source":"oban","duration":1725,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:40:00.962 [info] {"source":"oban","duration":297,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:40:19.539 [info] {"source":"oban","duration":1427,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:40:49.541 [info] {"source":"oban","duration":737,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:41:00.964 [info] {"source":"oban","duration":503,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:41:19.543 [info] {"source":"oban","duration":1232,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:41:49.546 [info] {"source":"oban","duration":1645,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:42:00.965 [info] {"source":"oban","duration":382,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:42:19.548 [info] {"source":"oban","duration":1492,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:42:49.550 [info] {"source":"oban","duration":1129,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:43:00.967 [info] {"source":"oban","duration":1006,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:43:19.552 [info] {"source":"oban","duration":1072,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:43:49.553 [info] {"source":"oban","duration":637,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:44:00.969 [info] {"source":"oban","duration":968,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:44:19.555 [info] {"source":"oban","duration":826,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:44:49.557 [info] {"source":"oban","duration":1245,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:45:00.970 [info] {"source":"oban","duration":581,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:45:19.559 [info] {"source":"oban","duration":1033,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:45:49.561 [info] {"source":"oban","duration":1471,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:46:00.973 [info] {"source":"oban","duration":447,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:46:19.564 [info] {"source":"oban","duration":2065,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:46:49.566 [info] {"source":"oban","duration":1208,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:47:00.974 [info] {"source":"oban","duration":436,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:47:19.568 [info] {"source":"oban","duration":1392,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:47:49.570 [info] {"source":"oban","duration":1516,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:48:00.975 [info] {"source":"oban","duration":602,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:48:19.572 [info] {"source":"oban","duration":1383,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:48:49.574 [info] {"source":"oban","duration":1259,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:49:00.977 [info] {"source":"oban","duration":525,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:49:19.576 [info] {"source":"oban","duration":1231,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:49:49.578 [info] {"source":"oban","duration":853,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:50:00.978 [info] {"source":"oban","duration":403,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:50:19.580 [info] {"source":"oban","duration":1520,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:50:49.582 [info] {"source":"oban","duration":1316,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:51:00.979 [info] {"source":"oban","duration":286,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:51:19.585 [info] {"source":"oban","duration":1116,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:51:49.587 [info] {"source":"oban","duration":1452,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:52:00.981 [info] {"source":"oban","duration":499,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:52:19.589 [info] {"source":"oban","duration":616,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:52:49.591 [info] {"source":"oban","duration":1178,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:53:00.983 [info] {"source":"oban","duration":1102,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:53:19.593 [info] {"source":"oban","duration":1272,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:53:49.595 [info] {"source":"oban","duration":1321,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:54:00.985 [info] {"source":"oban","duration":508,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:54:19.597 [info] {"source":"oban","duration":1394,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:54:49.599 [info] {"source":"oban","duration":951,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:55:00.986 [info] {"source":"oban","duration":329,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:55:19.601 [info] {"source":"oban","duration":920,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:55:49.603 [info] {"source":"oban","duration":849,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:56:00.987 [info] {"source":"oban","duration":255,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:56:19.605 [info] {"source":"oban","duration":911,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:56:49.607 [info] {"source":"oban","duration":898,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:57:00.988 [info] {"source":"oban","duration":459,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:57:19.609 [info] {"source":"oban","duration":1358,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:57:49.611 [info] {"source":"oban","duration":1333,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:58:00.990 [info] {"source":"oban","duration":357,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:58:19.613 [info] {"source":"oban","duration":671,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:58:49.615 [info] {"source":"oban","duration":1140,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:59:00.992 [info] {"source":"oban","duration":812,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 23:59:19.618 [info] {"source":"oban","duration":1799,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 23:59:49.620 [info] {"source":"oban","duration":1535,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":1} 00:00:00.993 [info] {"source":"oban","duration":470,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:00:19.622 [info] {"source":"oban","duration":1520,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":4} 00:00:49.625 [info] {"source":"oban","duration":1415,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:01:00.994 [info] {"source":"oban","duration":416,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:01:19.627 [info] {"source":"oban","duration":1032,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:01:49.629 [info] {"source":"oban","duration":985,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:02:00.996 [info] {"source":"oban","duration":867,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:02:19.631 [info] {"source":"oban","duration":1281,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:02:49.633 [info] {"source":"oban","duration":1067,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:03:00.998 [info] {"source":"oban","duration":469,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:03:19.635 [info] {"source":"oban","duration":1170,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:03:49.637 [info] {"source":"oban","duration":1404,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:04:01.000 [info] {"source":"oban","duration":393,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:04:19.639 [info] {"source":"oban","duration":1334,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:04:49.641 [info] {"source":"oban","duration":1580,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:05:00.002 [info] {"source":"oban","duration":685,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:05:19.643 [info] {"source":"oban","duration":929,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:05:49.645 [info] {"source":"oban","duration":1553,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:06:00.004 [info] {"source":"oban","duration":1181,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:06:19.647 [info] {"source":"oban","duration":962,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:06:49.649 [info] {"source":"oban","duration":1245,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:07:00.005 [info] {"source":"oban","duration":308,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:07:19.651 [info] {"source":"oban","duration":1060,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:07:49.653 [info] {"source":"oban","duration":1441,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:08:00.006 [info] {"source":"oban","duration":489,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:08:19.655 [info] {"source":"oban","duration":1261,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:08:49.658 [info] {"source":"oban","duration":1994,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:09:00.008 [info] {"source":"oban","duration":1003,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:09:06.552 [info] {"args":{"id":5},"id":7395,"meta":{},"system_time":1766534946551933799,"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"]} 00:09:06.552 [debug] QUERY OK source="sources" db=0.2ms idle=1528.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] 00:09:06.553 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1528.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 00:09:06.554 [debug] QUERY OK source="media_items" db=1.0ms idle=1011.3ms SELECT count(*) FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [5] 00:09:06.554 [debug] QUERY OK source="media_items" db=0.2ms idle=10.0ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [5] 00:09:06.555 [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] 00:09:06.555 [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 [] 00:09:06.555 [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 [] 00:09:06.557 [debug] QUERY OK source="media_items" db=1.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."source_id" = ?) ORDER BY m0."uploaded_at" DESC LIMIT 50 OFFSET 20 [5] 00:09:06.574 [debug] Running yt-dlp command for action: get_media_attributes_for_collection 00:09:06.574 [debug] Current batch of media processed. Will check again in 1000ms 00:09:06.574 [debug] QUERY OK source="settings" db=0.2ms idle=19.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 00:09:06.574 [debug] QUERY OK source="settings" db=0.1ms idle=19.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 00:09:06.575 [debug] QUERY OK source="settings" db=0.0ms idle=19.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 00:09:06.575 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@DEKELCNC --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/DEKELCNC/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/1d/0c/1d0c7167db3f4c5de5e9400275f9ca81b675ea9e2a6683243f29e22888918b2a.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/a4/95/a495f9cff9efff02939587e309369665f6711310e96a70f7c2aded782ca6e4fa.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 00:09:07.575 [debug] Current batch of media processed. Will check again in 1000ms 00:09:08.576 [debug] Current batch of media processed. Will check again in 1000ms 00:09:09.577 [debug] Current batch of media processed. Will check again in 1000ms 00:09:10.579 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Fiber Laser engraving and marking on marble\n\nVideo Index\n0:00 How to engrave marble with a fiber laser marking machine?\n0:05 Fiber laser engraving image on marble\n4:45 Fly marking frame on marble\n6:15 Fiber laser engraving marble effect show\n\nMarking Parameter\n- Laser Power: fiber laser 300W\n- Marking speed:2000mm/s\n- Image Size:380mm*480mm\n- Total Marking Time: 30′47′′\n\nThis video shows marble engraving using a DEKCEL 300W flying fiber laser marking machine. Perfect engraving results and fast engraving speed. With a traditional CO2 laser engraver, it takes nearly 4~5 hours to finish the 380mm x 480mm engraved image. With our 300W fiber laser marker, processing takes just 30′47′′, which is more efficient than ever before.\n\nFor a more detailed description of the laser marking machines, please visit our website: https://bit.ly/4dvrx6h\n\nDekcel CNC, with more than 10 years of experience in laser marking machines, can customize the machine according to your mark request.\n\nPlease offer me your marking request, and we will make a marking video for you and recommend the most suitable CNC marking machine with the best configuration.\n\nIf there is any issue with the laser marking machine, please let me know. Contact info is below \n\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsApp: +8613356681090\nE-mail: info@dekcelcnc.com\nWeChat:minzuiweixiao\nWeb: www.dekcelcncmachine.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "duration" => 388, "filename" => "/downloads/DEKELCNC/2025-11-10 300W Tombstone Marble Fly Engraving and Marking with Fiber Laser Marker Machine/300W Tombstone Marble Fly Engraving and Marking with Fiber Laser Marker Machine [eQoctWGy64s].mp4", "id" => "eQoctWGy64s", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=eQoctWGy64s", "playlist_index" => 1, "timestamp" => 1762750567, "title" => "300W Tombstone Marble Fly Engraving and Marking with Fiber Laser Marker Machine", "upload_date" => "20251110"} 00:09:10.579 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=556.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 00:09:10.580 [debug] QUERY OK source="sources" db=0.1ms idle=556.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] 00:09:10.581 [debug] QUERY OK source="media_items" db=0.9ms idle=556.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-10 04:56:07Z], 5] 00:09:10.583 [debug] QUERY OK source="media_items" db=1.0ms idle=558.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Fiber Laser engraving and marking on marble\n\nVideo Index\n0:00 How to engrave marble with a fiber laser marking machine?\n0:05 Fiber laser engraving image on marble\n4:45 Fly marking frame on marble\n6:15 Fiber laser engraving marble effect show\n\nMarking Parameter\n- Laser Power: fiber laser 300W\n- Marking speed:2000mm/s\n- Image Size:380mm*480mm\n- Total Marking Time: 30′47′′\n\nThis video shows marble engraving using a DEKCEL 300W flying fiber laser marking machine. Perfect engraving results and fast engraving speed. With a traditional CO2 laser engraver, it takes nearly 4~5 hours to finish the 380mm x 480mm engraved image. With our 300W fiber laser marker, processing takes just 30′47′′, which is more efficient than ever before.\n\nFor a more detailed description of the laser marking machines, please visit our website: https://bit.ly/4dvrx6h\n\nDekcel CNC, with more than 10 years of experience in laser marking machines, can customize the machine according to your mark request.\n\nPlease offer me your marking request, and we will make a marking video for you and recommend the most suitable CNC marking machine with the best configuration.\n\nIf there is any issue with the laser marking machine, please let me know. Contact info is below \n\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsApp: +8613356681090\nE-mail: info@dekcelcnc.com\nWeChat:minzuiweixiao\nWeb: www.dekcelcncmachine.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "300W Tombstone Marble Fly Engraving and Marking with Fiber Laser Marker Machine", "8f9833b9-8535-4132-a569-283a8703884f", "https://www.youtube.com/watch?v=eQoctWGy64s", "eQoctWGy64s", false, 388, false, 1, "/downloads/DEKELCNC/2025-11-10 300W Tombstone Marble Fly Engraving and Marking with Fiber Laser Marker Machine/300W Tombstone Marble Fly Engraving and Marking with Fiber Laser Marker Machine [eQoctWGy64s].mp4", false, false, 5, [], 98, ~U[2025-11-10 04:56:07Z], ~U[2025-12-24 00:09:10Z], ~U[2025-12-24 00:09:10Z], "Fiber Laser engraving and marking on marble\n\nVideo Index\n0:00 How to engrave marble with a fiber laser marking machine?\n0:05 Fiber laser engraving image on marble\n4:45 Fly marking frame on marble\n6:15 Fiber laser engraving marble effect show\n\nMarking Parameter\n- Laser Power: fiber laser 300W\n- Marking speed:2000mm/s\n- Image Size:380mm*480mm\n- Total Marking Time: 30′47′′\n\nThis video shows marble engraving using a DEKCEL 300W flying fiber laser marking machine. Perfect engraving results and fast engraving speed. With a traditional CO2 laser engraver, it takes nearly 4~5 hours to finish the 380mm x 480mm engraved image. With our 300W fiber laser marker, processing takes just 30′47′′, which is more efficient than ever before.\n\nFor a more detailed description of the laser marking machines, please visit our website: https://bit.ly/4dvrx6h\n\nDekcel CNC, with more than 10 years of experience in laser marking machines, can customize the machine according to your mark request.\n\nPlease offer me your marking request, and we will make a marking video for you and recommend the most suitable CNC marking machine with the best configuration.\n\nIf there is any issue with the laser marking machine, please let me know. Contact info is below \n\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsApp: +8613356681090\nE-mail: info@dekcelcnc.com\nWeChat:minzuiweixiao\nWeb: www.dekcelcncmachine.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "300W Tombstone Marble Fly Engraving and Marking with Fiber Laser Marker Machine", "https://www.youtube.com/watch?v=eQoctWGy64s", "eQoctWGy64s", 388, false, "/downloads/DEKELCNC/2025-11-10 300W Tombstone Marble Fly Engraving and Marking with Fiber Laser Marker Machine/300W Tombstone Marble Fly Engraving and Marking with Fiber Laser Marker Machine [eQoctWGy64s].mp4", false, 5, ~U[2025-11-10 04:56:07Z]] 00:09:10.583 [debug] QUERY OK source="sources" db=0.3ms idle=30.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 00:09:10.584 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 00:09:10.584 [debug] QUERY OK source="media_items" db=0.2ms idle=4.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 [18615] 00:09:10.584 [debug] Current batch of media processed. Will check again in 1000ms 00:09:11.585 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Laminated Glass PVB Interlayer SGP Film Cutting Machine\n\nOur PVB and SGP interlayer film CNC knife-cutting machine is equipped with a universal cutting tool; the PVB and SGP interlayer film cutting edge is fine, and it is free of debris or residual particles.\n\nWe can customize the PVB film cutting machine according to your processing requirements. For more PVB interlayer film cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/4dB0eq7\n\nPlease send me your SGP and PVB interlayer film cutting request. We will create a cutting video and recommend the most suitable digital knife-cutting machine with the best configuration.\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsapp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for watching\n\nCHINA DEKCEL CNC", "duration" => 45, "filename" => "/downloads/DEKELCNC/2025-10-23 Laminated Glass PVB Interlayer SGP Film Cutting Machine/Laminated Glass PVB Interlayer SGP Film Cutting Machine [p37UiWxNecw].mkv", "id" => "p37UiWxNecw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=p37UiWxNecw", "playlist_index" => 2, "timestamp" => 1761205183, "title" => "Laminated Glass PVB Interlayer SGP Film Cutting Machine", "upload_date" => "20251023"} 00:09:11.586 [debug] QUERY OK source="sources" db=0.3ms 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 (?)) [5] 00:09:11.587 [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" = ?) [5] 00:09:11.588 [debug] QUERY OK source="media_items" db=0.7ms 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[2025-10-23 07:39:43Z], 5] 00:09:11.589 [debug] QUERY OK source="media_items" db=0.7ms idle=1003.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Laminated Glass PVB Interlayer SGP Film Cutting Machine\n\nOur PVB and SGP interlayer film CNC knife-cutting machine is equipped with a universal cutting tool; the PVB and SGP interlayer film cutting edge is fine, and it is free of debris or residual particles.\n\nWe can customize the PVB film cutting machine according to your processing requirements. For more PVB interlayer film cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/4dB0eq7\n\nPlease send me your SGP and PVB interlayer film cutting request. We will create a cutting video and recommend the most suitable digital knife-cutting machine with the best configuration.\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsapp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for watching\n\nCHINA DEKCEL CNC", "Laminated Glass PVB Interlayer SGP Film Cutting Machine", "0da0fe89-eda5-491d-9e00-a440e72c9e6d", "https://www.youtube.com/watch?v=p37UiWxNecw", "p37UiWxNecw", false, 45, false, 2, "/downloads/DEKELCNC/2025-10-23 Laminated Glass PVB Interlayer SGP Film Cutting Machine/Laminated Glass PVB Interlayer SGP Film Cutting Machine [p37UiWxNecw].mkv", false, false, 5, [], 98, ~U[2025-10-23 07:39:43Z], ~U[2025-12-24 00:09:11Z], ~U[2025-12-24 00:09:11Z], "Laminated Glass PVB Interlayer SGP Film Cutting Machine\n\nOur PVB and SGP interlayer film CNC knife-cutting machine is equipped with a universal cutting tool; the PVB and SGP interlayer film cutting edge is fine, and it is free of debris or residual particles.\n\nWe can customize the PVB film cutting machine according to your processing requirements. For more PVB interlayer film cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/4dB0eq7\n\nPlease send me your SGP and PVB interlayer film cutting request. We will create a cutting video and recommend the most suitable digital knife-cutting machine with the best configuration.\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsapp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for watching\n\nCHINA DEKCEL CNC", "Laminated Glass PVB Interlayer SGP Film Cutting Machine", "https://www.youtube.com/watch?v=p37UiWxNecw", "p37UiWxNecw", 45, false, "/downloads/DEKELCNC/2025-10-23 Laminated Glass PVB Interlayer SGP Film Cutting Machine/Laminated Glass PVB Interlayer SGP Film Cutting Machine [p37UiWxNecw].mkv", false, 5, ~U[2025-10-23 07:39:43Z]] 00:09:11.589 [debug] QUERY OK source="sources" db=0.1ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 00:09:11.589 [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] 00:09:11.590 [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 [15193] 00:09:11.590 [debug] Current batch of media processed. Will check again in 1000ms 00:09:12.591 [debug] Current batch of media processed. Will check again in 1000ms 00:09:13.593 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "100W Fiber Laser Marking and Engraving Marble \n\nThis video shows marble engraving using a DEKCEL 100W fiber laser marking machine. Perfect engraving results and fast engraving speed. With a traditional CO2 laser engraver, it takes nearly an hour to finish the 200mm x 252mm engraved image. With our 100W fiber laser marker, processing takes just 1′54′′, which is more efficient than ever before.\n\nFor a more detailed description of the laser marking machines, please visit our website: https://bit.ly/4dvrx6h\n\nDekcel CNC, with more than 10 years of experience in laser marking machines, can customize the machine according to your mark request.\n\nPlease offer me your marking request, and we will make a marking video for you and recommend the most suitable CNC marking machine with the best configuration.\n\nIf there is any issue with the laser marking machine, please let me know. Contact info is below \n\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsApp: +8613356681090\nE-mail: info@dekcelcnc.com\nWeChat:minzuiweixiao\nWeb: www.dekcelcncmachine.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "duration" => 121, "filename" => "/downloads/DEKELCNC/2025-09-10 Marble Marking and Engraving with 100W Fiber Laser Marker Machine/Marble Marking and Engraving with 100W Fiber Laser Marker Machine [QGIZJ42cR8k].mkv", "id" => "QGIZJ42cR8k", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=QGIZJ42cR8k", "playlist_index" => 3, "timestamp" => 1757495495, "title" => "Marble Marking and Engraving with 100W Fiber Laser Marker Machine", "upload_date" => "20250910"} 00:09:13.594 [debug] QUERY OK source="sources" db=0.2ms idle=569.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 00:09:13.594 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=570.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] 00:09:13.595 [debug] QUERY OK source="media_items" db=0.8ms idle=570.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-10 09:11:35Z], 5] 00:09:13.597 [debug] QUERY OK source="media_items" db=0.9ms idle=571.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["100W Fiber Laser Marking and Engraving Marble \n\nThis video shows marble engraving using a DEKCEL 100W fiber laser marking machine. Perfect engraving results and fast engraving speed. With a traditional CO2 laser engraver, it takes nearly an hour to finish the 200mm x 252mm engraved image. With our 100W fiber laser marker, processing takes just 1′54′′, which is more efficient than ever before.\n\nFor a more detailed description of the laser marking machines, please visit our website: https://bit.ly/4dvrx6h\n\nDekcel CNC, with more than 10 years of experience in laser marking machines, can customize the machine according to your mark request.\n\nPlease offer me your marking request, and we will make a marking video for you and recommend the most suitable CNC marking machine with the best configuration.\n\nIf there is any issue with the laser marking machine, please let me know. Contact info is below \n\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsApp: +8613356681090\nE-mail: info@dekcelcnc.com\nWeChat:minzuiweixiao\nWeb: www.dekcelcncmachine.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "Marble Marking and Engraving with 100W Fiber Laser Marker Machine", "275106f0-0c6a-45d0-9d55-138711244831", "https://www.youtube.com/watch?v=QGIZJ42cR8k", "QGIZJ42cR8k", false, 121, false, 3, "/downloads/DEKELCNC/2025-09-10 Marble Marking and Engraving with 100W Fiber Laser Marker Machine/Marble Marking and Engraving with 100W Fiber Laser Marker Machine [QGIZJ42cR8k].mkv", false, false, 5, [], 96, ~U[2025-09-10 09:11:35Z], ~U[2025-12-24 00:09:13Z], ~U[2025-12-24 00:09:13Z], "100W Fiber Laser Marking and Engraving Marble \n\nThis video shows marble engraving using a DEKCEL 100W fiber laser marking machine. Perfect engraving results and fast engraving speed. With a traditional CO2 laser engraver, it takes nearly an hour to finish the 200mm x 252mm engraved image. With our 100W fiber laser marker, processing takes just 1′54′′, which is more efficient than ever before.\n\nFor a more detailed description of the laser marking machines, please visit our website: https://bit.ly/4dvrx6h\n\nDekcel CNC, with more than 10 years of experience in laser marking machines, can customize the machine according to your mark request.\n\nPlease offer me your marking request, and we will make a marking video for you and recommend the most suitable CNC marking machine with the best configuration.\n\nIf there is any issue with the laser marking machine, please let me know. Contact info is below \n\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsApp: +8613356681090\nE-mail: info@dekcelcnc.com\nWeChat:minzuiweixiao\nWeb: www.dekcelcncmachine.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "Marble Marking and Engraving with 100W Fiber Laser Marker Machine", "https://www.youtube.com/watch?v=QGIZJ42cR8k", "QGIZJ42cR8k", 121, false, "/downloads/DEKELCNC/2025-09-10 Marble Marking and Engraving with 100W Fiber Laser Marker Machine/Marble Marking and Engraving with 100W Fiber Laser Marker Machine [QGIZJ42cR8k].mkv", false, 5, ~U[2025-09-10 09:11:35Z]] 00:09:13.597 [debug] QUERY OK source="sources" db=0.1ms idle=39.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 00:09:13.597 [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] 00:09:13.598 [debug] QUERY OK source="media_items" db=0.3ms idle=3.5ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [1163] 00:09:13.598 [debug] Current batch of media processed. Will check again in 1000ms 00:09:14.599 [debug] Current batch of media processed. Will check again in 1000ms 00:09:15.601 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "How to Use the CCD Camera Xiao Software User Manual?\n\nThis CCD camera knife cutting machine is equipped with an advanced Vision system, camera automatic recognition and positioning, and cutting applied on printed fabric, acrylic, MDF wood board, PVC plastic, KT board, and so on.\n\nThis video will guide you on how to use and set the parameters for the CNC knife cutting machine‘s Xiao software.\n\nWe can customize the digital CNC knife-cutting machine according to your processing requirements. For more oscillating knife-cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/45VyrjG\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsApp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "duration" => 188, "filename" => "/downloads/DEKELCNC/2025-09-10 How to Use CCD Camera |【Xiao 】Software User Manual?/How to Use CCD Camera |【Xiao 】Software User Manual? [eWRLXaZdtvs].mp4", "id" => "eWRLXaZdtvs", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=eWRLXaZdtvs", "playlist_index" => 4, "timestamp" => 1757474535, "title" => "How to Use CCD Camera |【Xiao 】Software User Manual?", "upload_date" => "20250910"} 00:09:15.601 [debug] QUERY OK source="sources" db=0.2ms 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" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 00:09:15.602 [debug] QUERY OK source="sources" db=0.3ms idle=578.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 00:09:15.603 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms idle=578.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-10 03:22:15Z], 5] 00:09:15.604 [debug] QUERY OK source="media_items" db=0.8ms idle=580.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["How to Use the CCD Camera Xiao Software User Manual?\n\nThis CCD camera knife cutting machine is equipped with an advanced Vision system, camera automatic recognition and positioning, and cutting applied on printed fabric, acrylic, MDF wood board, PVC plastic, KT board, and so on.\n\nThis video will guide you on how to use and set the parameters for the CNC knife cutting machine‘s Xiao software.\n\nWe can customize the digital CNC knife-cutting machine according to your processing requirements. For more oscillating knife-cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/45VyrjG\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsApp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "How to Use CCD Camera |【Xiao 】Software User Manual?", "4872a2ae-8564-48f6-8510-e4e5b57262ab", "https://www.youtube.com/watch?v=eWRLXaZdtvs", "eWRLXaZdtvs", false, 188, false, 4, "/downloads/DEKELCNC/2025-09-10 How to Use CCD Camera |【Xiao 】Software User Manual?/How to Use CCD Camera |【Xiao 】Software User Manual? [eWRLXaZdtvs].mp4", false, false, 5, [], 96, ~U[2025-09-10 03:22:15Z], ~U[2025-12-24 00:09:15Z], ~U[2025-12-24 00:09:15Z], "How to Use the CCD Camera Xiao Software User Manual?\n\nThis CCD camera knife cutting machine is equipped with an advanced Vision system, camera automatic recognition and positioning, and cutting applied on printed fabric, acrylic, MDF wood board, PVC plastic, KT board, and so on.\n\nThis video will guide you on how to use and set the parameters for the CNC knife cutting machine‘s Xiao software.\n\nWe can customize the digital CNC knife-cutting machine according to your processing requirements. For more oscillating knife-cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/45VyrjG\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsApp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "How to Use CCD Camera |【Xiao 】Software User Manual?", "https://www.youtube.com/watch?v=eWRLXaZdtvs", "eWRLXaZdtvs", 188, false, "/downloads/DEKELCNC/2025-09-10 How to Use CCD Camera |【Xiao 】Software User Manual?/How to Use CCD Camera |【Xiao 】Software User Manual? [eWRLXaZdtvs].mp4", false, 5, ~U[2025-09-10 03:22:15Z]] 00:09:15.605 [debug] QUERY OK source="sources" db=0.2ms idle=42.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] 00:09:15.605 [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] 00:09:15.606 [debug] QUERY OK source="media_items" db=0.2ms 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 [1164] 00:09:15.606 [debug] Current batch of media processed. Will check again in 1000ms 00:09:16.608 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Xiao Software Installation IP Setting for CNC Knife Cutting Machine\n\nVideo Index\n00:00 How to install Xiao software for CNC knifing cutting machine\n00:08 Unzip the Xiao software package and create a desktop shortcut\n00:38 IP setting for Xiao software\n01:04 Get machine parameters from controller\n\nWhen you receive your new oscillating knife cutting machine, this video will guide you through the installation of the software and the setup of the machine parameters.\n\nWe can customize the digital CNC knife-cutting machine according to your processing requirements. For more oscillating knife-cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/45VyrjG\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsApp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "duration" => 91, "filename" => "/downloads/DEKELCNC/2025-09-10 How to Install Xiao Software | IP Setting for CNC Knife Cutting Machine/How to Install Xiao Software | IP Setting for CNC Knife Cutting Machine [poF9_GtG3MQ].mp4", "id" => "poF9_GtG3MQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=poF9_GtG3MQ", "playlist_index" => 5, "timestamp" => 1757473432, "title" => "How to Install Xiao Software | IP Setting for CNC Knife Cutting Machine", "upload_date" => "20250910"} 00:09:16.608 [debug] QUERY OK source="sources" db=0.2ms idle=1003.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 00:09:16.609 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1003.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 00:09:16.610 [debug] QUERY OK source="media_items" db=0.8ms idle=1003.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-10 03:03:52Z], 5] 00:09:16.611 [debug] QUERY OK source="media_items" db=0.8ms idle=1004.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Xiao Software Installation IP Setting for CNC Knife Cutting Machine\n\nVideo Index\n00:00 How to install Xiao software for CNC knifing cutting machine\n00:08 Unzip the Xiao software package and create a desktop shortcut\n00:38 IP setting for Xiao software\n01:04 Get machine parameters from controller\n\nWhen you receive your new oscillating knife cutting machine, this video will guide you through the installation of the software and the setup of the machine parameters.\n\nWe can customize the digital CNC knife-cutting machine according to your processing requirements. For more oscillating knife-cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/45VyrjG\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsApp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "How to Install Xiao Software | IP Setting for CNC Knife Cutting Machine", "71fa7676-2ac0-42cb-a933-da78a265fe30", "https://www.youtube.com/watch?v=poF9_GtG3MQ", "poF9_GtG3MQ", false, 91, false, 5, "/downloads/DEKELCNC/2025-09-10 How to Install Xiao Software | IP Setting for CNC Knife Cutting Machine/How to Install Xiao Software | IP Setting for CNC Knife Cutting Machine [poF9_GtG3MQ].mp4", false, false, 5, [], 96, ~U[2025-09-10 03:03:52Z], ~U[2025-12-24 00:09:16Z], ~U[2025-12-24 00:09:16Z], "Xiao Software Installation IP Setting for CNC Knife Cutting Machine\n\nVideo Index\n00:00 How to install Xiao software for CNC knifing cutting machine\n00:08 Unzip the Xiao software package and create a desktop shortcut\n00:38 IP setting for Xiao software\n01:04 Get machine parameters from controller\n\nWhen you receive your new oscillating knife cutting machine, this video will guide you through the installation of the software and the setup of the machine parameters.\n\nWe can customize the digital CNC knife-cutting machine according to your processing requirements. For more oscillating knife-cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/45VyrjG\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsApp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "How to Install Xiao Software | IP Setting for CNC Knife Cutting Machine", "https://www.youtube.com/watch?v=poF9_GtG3MQ", "poF9_GtG3MQ", 91, false, "/downloads/DEKELCNC/2025-09-10 How to Install Xiao Software | IP Setting for CNC Knife Cutting Machine/How to Install Xiao Software | IP Setting for CNC Knife Cutting Machine [poF9_GtG3MQ].mp4", false, 5, ~U[2025-09-10 03:03:52Z]] 00:09:16.612 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 00:09:16.612 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 00:09:16.613 [debug] QUERY OK source="media_items" db=0.2ms 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 [1166] 00:09:16.613 [debug] Current batch of media processed. Will check again in 1000ms 00:09:17.614 [debug] Current batch of media processed. Will check again in 1000ms 00:09:18.616 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "How to Table Calibration for CNC Knife Cutting Machine?\n\nWhile you get a new CNC knife cutting machine or the digital knife cutter machine has been used for a few years, and the machine table surface accuracy is not correct, this video will show you how to use the tools to calibrate the digital knife cutting machine processing table.\n\nWe can customize the digital CNC knife-cutting machine according to your processing requirements. For more oscillating knife-cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/45VyrjG\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsApp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "duration" => 119, "filename" => "/downloads/DEKELCNC/2025-09-02 How to Table Calibration for CNC Knife Cutting Machine?/How to Table Calibration for CNC Knife Cutting Machine? [SQM_9rTu3Bw].mkv", "id" => "SQM_9rTu3Bw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=SQM_9rTu3Bw", "playlist_index" => 6, "timestamp" => 1756813478, "title" => "How to Table Calibration for CNC Knife Cutting Machine?", "upload_date" => "20250902"} 00:09:18.616 [debug] QUERY OK source="sources" db=0.2ms idle=592.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 00:09:18.617 [debug] QUERY OK source="sources" db=0.2ms idle=593.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 00:09:18.618 [debug] QUERY OK source="media_items" db=0.8ms idle=593.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-02 11:44:38Z], 5] 00:09:18.619 [debug] QUERY OK source="media_items" db=0.7ms idle=595.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["How to Table Calibration for CNC Knife Cutting Machine?\n\nWhile you get a new CNC knife cutting machine or the digital knife cutter machine has been used for a few years, and the machine table surface accuracy is not correct, this video will show you how to use the tools to calibrate the digital knife cutting machine processing table.\n\nWe can customize the digital CNC knife-cutting machine according to your processing requirements. For more oscillating knife-cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/45VyrjG\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsApp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "How to Table Calibration for CNC Knife Cutting Machine?", "bf541d4f-0445-429a-8f29-a844172e9d7a", "https://www.youtube.com/watch?v=SQM_9rTu3Bw", "SQM_9rTu3Bw", false, 119, false, 6, "/downloads/DEKELCNC/2025-09-02 How to Table Calibration for CNC Knife Cutting Machine?/How to Table Calibration for CNC Knife Cutting Machine? [SQM_9rTu3Bw].mkv", false, false, 5, [], 98, ~U[2025-09-02 11:44:38Z], ~U[2025-12-24 00:09:18Z], ~U[2025-12-24 00:09:18Z], "How to Table Calibration for CNC Knife Cutting Machine?\n\nWhile you get a new CNC knife cutting machine or the digital knife cutter machine has been used for a few years, and the machine table surface accuracy is not correct, this video will show you how to use the tools to calibrate the digital knife cutting machine processing table.\n\nWe can customize the digital CNC knife-cutting machine according to your processing requirements. For more oscillating knife-cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/45VyrjG\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsApp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "How to Table Calibration for CNC Knife Cutting Machine?", "https://www.youtube.com/watch?v=SQM_9rTu3Bw", "SQM_9rTu3Bw", 119, false, "/downloads/DEKELCNC/2025-09-02 How to Table Calibration for CNC Knife Cutting Machine?/How to Table Calibration for CNC Knife Cutting Machine? [SQM_9rTu3Bw].mkv", false, 5, ~U[2025-09-02 11:44:38Z]] 00:09:18.619 [debug] QUERY OK source="sources" db=0.1ms idle=51.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 00:09:18.620 [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] 00:09:18.620 [debug] QUERY OK source="media_items" db=0.3ms 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 [1173] 00:09:18.621 [debug] Current batch of media processed. Will check again in 1000ms 00:09:19.621 [debug] Current batch of media processed. Will check again in 1000ms 00:09:19.661 [info] {"source":"oban","duration":1378,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:09:20.622 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Large Format Marble, Granite, Stone Fly Marking | 100W Fiber Laser Marker Machine \n\nWith a larger-format DEK-1325J fiber 100W laser marking machine, you can easily make large-sized pattern markings on marble, granite, and stone materials. You only need to import the marking file into the software, and the machine will do the pattern processing automatically.\n\nNow, with our machine, you can also mark a frosted effect on glass, remove the paint layer on a mirror, cut holes in glass, etc.\n\nMachine Description\n# Working area 1300mm*2500mm\n# Fly marking control system\n# Fiber 100W laser generator\n# Gera and rack transmission system\n# fly marking on glass, mirror, marble\n# coating paint removing for the mirror\n# frosted effect engraving for glass\n# hole cutting for glass\n\nFor details of this large-format laser marking machine, please visit our website:https://bit.ly/4ekFvcb\n\nPlease offer me your request, and we will make a testing video for you and recommend the most suitable laser marking machine with the best configuration.\n\nAny issues with the machine, please let me know. Contact info as below \nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsapp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com \n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "duration" => 121, "filename" => "/downloads/DEKELCNC/2025-06-24 Large Format Fly Marking Marble, Granite, Stone | 100W Fiber Laser Machine/Large Format Fly Marking Marble, Granite, Stone | 100W Fiber Laser Machine [NonmdzkE7aA].mkv", "id" => "NonmdzkE7aA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=NonmdzkE7aA", "playlist_index" => 7, "timestamp" => 1750755119, "title" => "Large Format Fly Marking Marble, Granite, Stone | 100W Fiber Laser Machine", "upload_date" => "20250624"} 00:09:20.623 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=962.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 00:09:20.623 [debug] QUERY OK source="sources" db=0.2ms idle=600.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] 00:09:20.625 [debug] QUERY OK source="media_items" db=0.8ms idle=600.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-24 08:51:59Z], 5] 00:09:20.628 [debug] QUERY OK source="media_items" db=3.0ms idle=601.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Large Format Marble, Granite, Stone Fly Marking | 100W Fiber Laser Marker Machine \n\nWith a larger-format DEK-1325J fiber 100W laser marking machine, you can easily make large-sized pattern markings on marble, granite, and stone materials. You only need to import the marking file into the software, and the machine will do the pattern processing automatically.\n\nNow, with our machine, you can also mark a frosted effect on glass, remove the paint layer on a mirror, cut holes in glass, etc.\n\nMachine Description\n# Working area 1300mm*2500mm\n# Fly marking control system\n# Fiber 100W laser generator\n# Gera and rack transmission system\n# fly marking on glass, mirror, marble\n# coating paint removing for the mirror\n# frosted effect engraving for glass\n# hole cutting for glass\n\nFor details of this large-format laser marking machine, please visit our website:https://bit.ly/4ekFvcb\n\nPlease offer me your request, and we will make a testing video for you and recommend the most suitable laser marking machine with the best configuration.\n\nAny issues with the machine, please let me know. Contact info as below \nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsapp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com \n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "Large Format Fly Marking Marble, Granite, Stone | 100W Fiber Laser Machine", "94dea7ad-d231-46dc-9e02-e67b46515dbb", "https://www.youtube.com/watch?v=NonmdzkE7aA", "NonmdzkE7aA", false, 121, false, 7, "/downloads/DEKELCNC/2025-06-24 Large Format Fly Marking Marble, Granite, Stone | 100W Fiber Laser Machine/Large Format Fly Marking Marble, Granite, Stone | 100W Fiber Laser Machine [NonmdzkE7aA].mkv", false, false, 5, [], 97, ~U[2025-06-24 08:51:59Z], ~U[2025-12-24 00:09:20Z], ~U[2025-12-24 00:09:20Z], "Large Format Marble, Granite, Stone Fly Marking | 100W Fiber Laser Marker Machine \n\nWith a larger-format DEK-1325J fiber 100W laser marking machine, you can easily make large-sized pattern markings on marble, granite, and stone materials. You only need to import the marking file into the software, and the machine will do the pattern processing automatically.\n\nNow, with our machine, you can also mark a frosted effect on glass, remove the paint layer on a mirror, cut holes in glass, etc.\n\nMachine Description\n# Working area 1300mm*2500mm\n# Fly marking control system\n# Fiber 100W laser generator\n# Gera and rack transmission system\n# fly marking on glass, mirror, marble\n# coating paint removing for the mirror\n# frosted effect engraving for glass\n# hole cutting for glass\n\nFor details of this large-format laser marking machine, please visit our website:https://bit.ly/4ekFvcb\n\nPlease offer me your request, and we will make a testing video for you and recommend the most suitable laser marking machine with the best configuration.\n\nAny issues with the machine, please let me know. Contact info as below \nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsapp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com \n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "Large Format Fly Marking Marble, Granite, Stone | 100W Fiber Laser Machine", "https://www.youtube.com/watch?v=NonmdzkE7aA", "NonmdzkE7aA", 121, false, "/downloads/DEKELCNC/2025-06-24 Large Format Fly Marking Marble, Granite, Stone | 100W Fiber Laser Machine/Large Format Fly Marking Marble, Granite, Stone | 100W Fiber Laser Machine [NonmdzkE7aA].mkv", false, 5, ~U[2025-06-24 08:51:59Z]] 00:09:20.629 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [5] 00:09:20.629 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=5.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 00:09:20.630 [debug] QUERY OK source="media_items" db=0.2ms idle=6.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [1175] 00:09:20.630 [debug] Current batch of media processed. Will check again in 1000ms 00:09:21.631 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Faux PU Leather Fabrics Knife Cutting Machine\n\nDEKCEL automatic leather CNC knife cutting machines are highly efficient and precise cutting devices widely used in the processing of synthetic leather, artificial leather, faux leather, PU leather, and vinyl leather materials. Their working principle involves cutting with a high-frequency vibrating blade, offering fast speed and high precision, making them particularly suitable for industries such as sofas and clothing that demand complex shapes and high efficiency. \n\nCompared to laser cutting, vibration knife cutting machines do not burn the edges of materials due to high temperatures, avoiding issues like edge yellowing or hardening, and they do not produce harmful smoke, making them more environmentally friendly and safer. Additionally, vibration knife-cutting machines support a variety of material thicknesses, enabling them to easily handle cutting tasks ranging from thin fabrics to thick leather.\n\nMoreover, the leather cutting machine is equipped with a marking pen function, which can draw the name and batch number of each component before cutting, facilitating differentiation and management and avoiding confusion during the production process.\n\nWith a high degree of automation, it can be paired with CAD design software to achieve precise layout and batch production, significantly improving production efficiency and reducing labor costs. In summary, with its efficient, eco-friendly, and precise features, the vibration knife-cutting machine has become an essential tool in the modern leather processing industry.\n\nWe can customize the leather CNC knife-cutting machine according to your processing requirements. For more leather oscillating knife-cutting machines, please visit our catalog of digital knife-cutter plotter machines: (https://bit.ly/4dB0eq7)\n\nPlease send me your leather-cutting request. We will create a cutting video and recommend the most suitable digital knife-cutting machine with the best configuration.\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsapp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "duration" => 91, "filename" => "/downloads/DEKELCNC/2025-06-11 Faux PU Leather Fabrics Knife Cutting Machine/Faux PU Leather Fabrics Knife Cutting Machine [WHZ1k5CelfE].mkv", "id" => "WHZ1k5CelfE", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=WHZ1k5CelfE", "playlist_index" => 8, "timestamp" => 1749626756, "title" => "Faux PU Leather Fabrics Knife Cutting Machine", "upload_date" => "20250611"} 00:09:21.632 [debug] QUERY OK source="sources" db=0.2ms 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 (?)) [5] 00:09:21.632 [debug] QUERY OK source="sources" db=0.1ms idle=1003.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 00:09:21.633 [debug] QUERY OK source="media_items" db=0.8ms idle=1003.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-11 07:25:56Z], 5] 00:09:21.635 [debug] QUERY OK source="media_items" db=1.1ms idle=1003.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Faux PU Leather Fabrics Knife Cutting Machine\n\nDEKCEL automatic leather CNC knife cutting machines are highly efficient and precise cutting devices widely used in the processing of synthetic leather, artificial leather, faux leather, PU leather, and vinyl leather materials. Their working principle involves cutting with a high-frequency vibrating blade, offering fast speed and high precision, making them particularly suitable for industries such as sofas and clothing that demand complex shapes and high efficiency. \n\nCompared to laser cutting, vibration knife cutting machines do not burn the edges of materials due to high temperatures, avoiding issues like edge yellowing or hardening, and they do not produce harmful smoke, making them more environmentally friendly and safer. Additionally, vibration knife-cutting machines support a variety of material thicknesses, enabling them to easily handle cutting tasks ranging from thin fabrics to thick leather.\n\nMoreover, the leather cutting machine is equipped with a marking pen function, which can draw the name and batch number of each component before cutting, facilitating differentiation and management and avoiding confusion during the production process.\n\nWith a high degree of automation, it can be paired with CAD design software to achieve precise layout and batch production, significantly improving production efficiency and reducing labor costs. In summary, with its efficient, eco-friendly, and precise features, the vibration knife-cutting machine has become an essential tool in the modern leather processing industry.\n\nWe can customize the leather CNC knife-cutting machine according to your processing requirements. For more leather oscillating knife-cutting machines, please visit our catalog of digital knife-cutter plotter machines: (https://bit.ly/4dB0eq7)\n\nPlease send me your leather-cutting request. We will create a cutting video and recommend the most suitable digital knife-cutting machine with the best configuration.\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsapp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "Faux PU Leather Fabrics Knife Cutting Machine", "3f219d35-da90-46db-bc76-3fa944fff652", "https://www.youtube.com/watch?v=WHZ1k5CelfE", "WHZ1k5CelfE", false, 91, false, 8, "/downloads/DEKELCNC/2025-06-11 Faux PU Leather Fabrics Knife Cutting Machine/Faux PU Leather Fabrics Knife Cutting Machine [WHZ1k5CelfE].mkv", false, false, 5, [], 96, ~U[2025-06-11 07:25:56Z], ~U[2025-12-24 00:09:21Z], ~U[2025-12-24 00:09:21Z], "Faux PU Leather Fabrics Knife Cutting Machine\n\nDEKCEL automatic leather CNC knife cutting machines are highly efficient and precise cutting devices widely used in the processing of synthetic leather, artificial leather, faux leather, PU leather, and vinyl leather materials. Their working principle involves cutting with a high-frequency vibrating blade, offering fast speed and high precision, making them particularly suitable for industries such as sofas and clothing that demand complex shapes and high efficiency. \n\nCompared to laser cutting, vibration knife cutting machines do not burn the edges of materials due to high temperatures, avoiding issues like edge yellowing or hardening, and they do not produce harmful smoke, making them more environmentally friendly and safer. Additionally, vibration knife-cutting machines support a variety of material thicknesses, enabling them to easily handle cutting tasks ranging from thin fabrics to thick leather.\n\nMoreover, the leather cutting machine is equipped with a marking pen function, which can draw the name and batch number of each component before cutting, facilitating differentiation and management and avoiding confusion during the production process.\n\nWith a high degree of automation, it can be paired with CAD design software to achieve precise layout and batch production, significantly improving production efficiency and reducing labor costs. In summary, with its efficient, eco-friendly, and precise features, the vibration knife-cutting machine has become an essential tool in the modern leather processing industry.\n\nWe can customize the leather CNC knife-cutting machine according to your processing requirements. For more leather oscillating knife-cutting machines, please visit our catalog of digital knife-cutter plotter machines: (https://bit.ly/4dB0eq7)\n\nPlease send me your leather-cutting request. We will create a cutting video and recommend the most suitable digital knife-cutting machine with the best configuration.\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsapp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "Faux PU Leather Fabrics Knife Cutting Machine", "https://www.youtube.com/watch?v=WHZ1k5CelfE", "WHZ1k5CelfE", 91, false, "/downloads/DEKELCNC/2025-06-11 Faux PU Leather Fabrics Knife Cutting Machine/Faux PU Leather Fabrics Knife Cutting Machine [WHZ1k5CelfE].mkv", false, 5, ~U[2025-06-11 07:25:56Z]] 00:09:21.636 [debug] QUERY OK source="sources" db=0.1ms idle=61.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] 00:09:21.636 [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] 00:09:21.637 [debug] QUERY OK source="media_items" db=0.2ms 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 [1177] 00:09:21.637 [debug] Current batch of media processed. Will check again in 1000ms 00:09:22.638 [debug] Current batch of media processed. Will check again in 1000ms 00:09:23.639 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "DEKCEL® 12mm Neoprene Rubber Oscillating Knife Cutting Machine \n\nOur Rubber CNC knife-cutting machine is equipped with a high-power 400W EOT tool, the rubber cutting edge is fine, and it is free of debris or residual particles.\n\nWe can customize the rubber cutting machine according to your processing requirements. For more rubber cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/4dB0eq7\n\nPlease send me your rubber cutting request. We will create a cutting video and recommend the most suitable digital knife-cutting machine with the best configuration.\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsapp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for watching", "duration" => 110, "filename" => "/downloads/DEKELCNC/2025-06-11 DEKCEL® 12mm Neoprene Rubber Sheet Oscillating Knife Cutting Machine/DEKCEL® 12mm Neoprene Rubber Sheet Oscillating Knife Cutting Machine [NpnyVsjkI6A].mkv", "id" => "NpnyVsjkI6A", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=NpnyVsjkI6A", "playlist_index" => 9, "timestamp" => 1749611228, "title" => "DEKCEL® 12mm Neoprene Rubber Sheet Oscillating Knife Cutting Machine", "upload_date" => "20250611"} 00:09:23.640 [debug] QUERY OK source="sources" db=0.3ms idle=616.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] 00:09:23.640 [debug] QUERY OK source="sources" db=0.3ms idle=617.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 00:09:23.642 [debug] QUERY OK source="media_items" db=0.9ms idle=617.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-11 03:07:08Z], 5] 00:09:23.643 [debug] QUERY OK source="media_items" db=1.0ms idle=618.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["DEKCEL® 12mm Neoprene Rubber Oscillating Knife Cutting Machine \n\nOur Rubber CNC knife-cutting machine is equipped with a high-power 400W EOT tool, the rubber cutting edge is fine, and it is free of debris or residual particles.\n\nWe can customize the rubber cutting machine according to your processing requirements. For more rubber cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/4dB0eq7\n\nPlease send me your rubber cutting request. We will create a cutting video and recommend the most suitable digital knife-cutting machine with the best configuration.\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsapp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for watching", "DEKCEL® 12mm Neoprene Rubber Sheet Oscillating Knife Cutting Machine", "61d8903c-cddf-4d5e-8836-f50287785f23", "https://www.youtube.com/watch?v=NpnyVsjkI6A", "NpnyVsjkI6A", false, 110, false, 9, "/downloads/DEKELCNC/2025-06-11 DEKCEL® 12mm Neoprene Rubber Sheet Oscillating Knife Cutting Machine/DEKCEL® 12mm Neoprene Rubber Sheet Oscillating Knife Cutting Machine [NpnyVsjkI6A].mkv", false, false, 5, [], 96, ~U[2025-06-11 03:07:08Z], ~U[2025-12-24 00:09:23Z], ~U[2025-12-24 00:09:23Z], "DEKCEL® 12mm Neoprene Rubber Oscillating Knife Cutting Machine \n\nOur Rubber CNC knife-cutting machine is equipped with a high-power 400W EOT tool, the rubber cutting edge is fine, and it is free of debris or residual particles.\n\nWe can customize the rubber cutting machine according to your processing requirements. For more rubber cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/4dB0eq7\n\nPlease send me your rubber cutting request. We will create a cutting video and recommend the most suitable digital knife-cutting machine with the best configuration.\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsapp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for watching", "DEKCEL® 12mm Neoprene Rubber Sheet Oscillating Knife Cutting Machine", "https://www.youtube.com/watch?v=NpnyVsjkI6A", "NpnyVsjkI6A", 110, false, "/downloads/DEKELCNC/2025-06-11 DEKCEL® 12mm Neoprene Rubber Sheet Oscillating Knife Cutting Machine/DEKCEL® 12mm Neoprene Rubber Sheet Oscillating Knife Cutting Machine [NpnyVsjkI6A].mkv", false, 5, ~U[2025-06-11 03:07:08Z]] 00:09:23.644 [debug] QUERY OK source="sources" db=0.2ms idle=63.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] 00:09:23.644 [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] 00:09:23.645 [debug] QUERY OK source="media_items" db=0.3ms 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 [1179] 00:09:23.645 [debug] Current batch of media processed. Will check again in 1000ms 00:09:24.646 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "3MM Rubber Gasket Cutting Machine\n\nOur rubber cutting machine is equipped with a 400W EOT tool with high processing accuracy and performs very well. \n\nWe can customize the rubber cutting machine according to your processing requirements. For more rubber cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/4dB0eq7\n\nPlease send me your rubber cutting request. We will create a cutting video and recommend the most suitable digital knife-cutting machine with the best configuration.\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsapp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for watching", "duration" => 47, "filename" => "/downloads/DEKELCNC/2025-06-11 3MM Neoprene Rubber Sheet Gasket Knife Cutting Machine/3MM Neoprene Rubber Sheet Gasket Knife Cutting Machine [61L_GF-QIrU].mkv", "id" => "61L_GF-QIrU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=61L_GF-QIrU", "playlist_index" => 10, "timestamp" => 1749610288, "title" => "3MM Neoprene Rubber Sheet Gasket Knife Cutting Machine", "upload_date" => "20250611"} 00:09:24.647 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=1003.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 00:09:24.648 [debug] QUERY OK source="sources" db=0.3ms idle=1003.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] 00:09:24.649 [debug] QUERY OK source="media_items" db=1.3ms queue=0.1ms idle=1003.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-06-11 02:51:28Z], 5] 00:09:24.651 [debug] QUERY OK source="media_items" db=1.0ms idle=1004.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["3MM Rubber Gasket Cutting Machine\n\nOur rubber cutting machine is equipped with a 400W EOT tool with high processing accuracy and performs very well. \n\nWe can customize the rubber cutting machine according to your processing requirements. For more rubber cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/4dB0eq7\n\nPlease send me your rubber cutting request. We will create a cutting video and recommend the most suitable digital knife-cutting machine with the best configuration.\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsapp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for watching", "3MM Neoprene Rubber Sheet Gasket Knife Cutting Machine", "21393bab-e8d8-481e-a7ed-85e500b318ce", "https://www.youtube.com/watch?v=61L_GF-QIrU", "61L_GF-QIrU", false, 47, false, 10, "/downloads/DEKELCNC/2025-06-11 3MM Neoprene Rubber Sheet Gasket Knife Cutting Machine/3MM Neoprene Rubber Sheet Gasket Knife Cutting Machine [61L_GF-QIrU].mkv", false, false, 5, [], 96, ~U[2025-06-11 02:51:28Z], ~U[2025-12-24 00:09:24Z], ~U[2025-12-24 00:09:24Z], "3MM Rubber Gasket Cutting Machine\n\nOur rubber cutting machine is equipped with a 400W EOT tool with high processing accuracy and performs very well. \n\nWe can customize the rubber cutting machine according to your processing requirements. For more rubber cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/4dB0eq7\n\nPlease send me your rubber cutting request. We will create a cutting video and recommend the most suitable digital knife-cutting machine with the best configuration.\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsapp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for watching", "3MM Neoprene Rubber Sheet Gasket Knife Cutting Machine", "https://www.youtube.com/watch?v=61L_GF-QIrU", "61L_GF-QIrU", 47, false, "/downloads/DEKELCNC/2025-06-11 3MM Neoprene Rubber Sheet Gasket Knife Cutting Machine/3MM Neoprene Rubber Sheet Gasket Knife Cutting Machine [61L_GF-QIrU].mkv", false, 5, ~U[2025-06-11 02:51:28Z]] 00:09:24.651 [debug] QUERY OK source="sources" db=0.2ms idle=68.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 00:09:24.652 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 00:09:24.653 [debug] QUERY OK source="media_items" db=0.5ms queue=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 [1181] 00:09:24.653 [debug] Current batch of media processed. Will check again in 1000ms 00:09:24.658 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@DEKELCNC --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/DEKELCNC/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/1d/0c/1d0c7167db3f4c5de5e9400275f9ca81b675ea9e2a6683243f29e22888918b2a.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/a4/95/a495f9cff9efff02939587e309369665f6711310e96a70f7c2aded782ca6e4fa.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 101 with: 00:09:24.658 [debug] Gracefully stopping file follower 00:09:24.659 [debug] QUERY OK source="sources" db=0.3ms idle=9.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [5] 00:09:24.659 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 00:09:24.660 [debug] QUERY OK source="media_items" db=0.8ms idle=8.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-10 04:56:07Z], 5] 00:09:24.665 [debug] QUERY OK source="media_items" db=4.0ms idle=8.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Fiber Laser engraving and marking on marble\n\nVideo Index\n0:00 How to engrave marble with a fiber laser marking machine?\n0:05 Fiber laser engraving image on marble\n4:45 Fly marking frame on marble\n6:15 Fiber laser engraving marble effect show\n\nMarking Parameter\n- Laser Power: fiber laser 300W\n- Marking speed:2000mm/s\n- Image Size:380mm*480mm\n- Total Marking Time: 30′47′′\n\nThis video shows marble engraving using a DEKCEL 300W flying fiber laser marking machine. Perfect engraving results and fast engraving speed. With a traditional CO2 laser engraver, it takes nearly 4~5 hours to finish the 380mm x 480mm engraved image. With our 300W fiber laser marker, processing takes just 30′47′′, which is more efficient than ever before.\n\nFor a more detailed description of the laser marking machines, please visit our website: https://bit.ly/4dvrx6h\n\nDekcel CNC, with more than 10 years of experience in laser marking machines, can customize the machine according to your mark request.\n\nPlease offer me your marking request, and we will make a marking video for you and recommend the most suitable CNC marking machine with the best configuration.\n\nIf there is any issue with the laser marking machine, please let me know. Contact info is below \n\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsApp: +8613356681090\nE-mail: info@dekcelcnc.com\nWeChat:minzuiweixiao\nWeb: www.dekcelcncmachine.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "300W Tombstone Marble Fly Engraving and Marking with Fiber Laser Marker Machine", "d806268a-56fc-4b73-b92d-7a14280bfa18", "https://www.youtube.com/watch?v=eQoctWGy64s", "eQoctWGy64s", false, 388, false, 1, "/downloads/DEKELCNC/2025-11-10 300W Tombstone Marble Fly Engraving and Marking with Fiber Laser Marker Machine/300W Tombstone Marble Fly Engraving and Marking with Fiber Laser Marker Machine [eQoctWGy64s].mp4", false, false, 5, [], 98, ~U[2025-11-10 04:56:07Z], ~U[2025-12-24 00:09:24Z], ~U[2025-12-24 00:09:24Z], "Fiber Laser engraving and marking on marble\n\nVideo Index\n0:00 How to engrave marble with a fiber laser marking machine?\n0:05 Fiber laser engraving image on marble\n4:45 Fly marking frame on marble\n6:15 Fiber laser engraving marble effect show\n\nMarking Parameter\n- Laser Power: fiber laser 300W\n- Marking speed:2000mm/s\n- Image Size:380mm*480mm\n- Total Marking Time: 30′47′′\n\nThis video shows marble engraving using a DEKCEL 300W flying fiber laser marking machine. Perfect engraving results and fast engraving speed. With a traditional CO2 laser engraver, it takes nearly 4~5 hours to finish the 380mm x 480mm engraved image. With our 300W fiber laser marker, processing takes just 30′47′′, which is more efficient than ever before.\n\nFor a more detailed description of the laser marking machines, please visit our website: https://bit.ly/4dvrx6h\n\nDekcel CNC, with more than 10 years of experience in laser marking machines, can customize the machine according to your mark request.\n\nPlease offer me your marking request, and we will make a marking video for you and recommend the most suitable CNC marking machine with the best configuration.\n\nIf there is any issue with the laser marking machine, please let me know. Contact info is below \n\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsApp: +8613356681090\nE-mail: info@dekcelcnc.com\nWeChat:minzuiweixiao\nWeb: www.dekcelcncmachine.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "300W Tombstone Marble Fly Engraving and Marking with Fiber Laser Marker Machine", "https://www.youtube.com/watch?v=eQoctWGy64s", "eQoctWGy64s", 388, false, "/downloads/DEKELCNC/2025-11-10 300W Tombstone Marble Fly Engraving and Marking with Fiber Laser Marker Machine/300W Tombstone Marble Fly Engraving and Marking with Fiber Laser Marker Machine [eQoctWGy64s].mp4", false, 5, ~U[2025-11-10 04:56:07Z]] 00:09:24.665 [debug] QUERY OK source="sources" db=0.2ms idle=12.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 00:09:24.667 [debug] QUERY OK source="media_items" db=0.8ms idle=6.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-23 07:39:43Z], 5] 00:09:24.668 [debug] QUERY OK source="media_items" db=0.9ms idle=7.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Laminated Glass PVB Interlayer SGP Film Cutting Machine\n\nOur PVB and SGP interlayer film CNC knife-cutting machine is equipped with a universal cutting tool; the PVB and SGP interlayer film cutting edge is fine, and it is free of debris or residual particles.\n\nWe can customize the PVB film cutting machine according to your processing requirements. For more PVB interlayer film cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/4dB0eq7\n\nPlease send me your SGP and PVB interlayer film cutting request. We will create a cutting video and recommend the most suitable digital knife-cutting machine with the best configuration.\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsapp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for watching\n\nCHINA DEKCEL CNC", "Laminated Glass PVB Interlayer SGP Film Cutting Machine", "2f9b4e8e-f604-48c4-9446-d1d599879851", "https://www.youtube.com/watch?v=p37UiWxNecw", "p37UiWxNecw", false, 45, false, 2, "/downloads/DEKELCNC/2025-10-23 Laminated Glass PVB Interlayer SGP Film Cutting Machine/Laminated Glass PVB Interlayer SGP Film Cutting Machine [p37UiWxNecw].mkv", false, false, 5, [], 98, ~U[2025-10-23 07:39:43Z], ~U[2025-12-24 00:09:24Z], ~U[2025-12-24 00:09:24Z], "Laminated Glass PVB Interlayer SGP Film Cutting Machine\n\nOur PVB and SGP interlayer film CNC knife-cutting machine is equipped with a universal cutting tool; the PVB and SGP interlayer film cutting edge is fine, and it is free of debris or residual particles.\n\nWe can customize the PVB film cutting machine according to your processing requirements. For more PVB interlayer film cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/4dB0eq7\n\nPlease send me your SGP and PVB interlayer film cutting request. We will create a cutting video and recommend the most suitable digital knife-cutting machine with the best configuration.\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsapp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for watching\n\nCHINA DEKCEL CNC", "Laminated Glass PVB Interlayer SGP Film Cutting Machine", "https://www.youtube.com/watch?v=p37UiWxNecw", "p37UiWxNecw", 45, false, "/downloads/DEKELCNC/2025-10-23 Laminated Glass PVB Interlayer SGP Film Cutting Machine/Laminated Glass PVB Interlayer SGP Film Cutting Machine [p37UiWxNecw].mkv", false, 5, ~U[2025-10-23 07:39:43Z]] 00:09:24.668 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 00:09:24.669 [debug] QUERY OK source="media_items" db=0.6ms 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[2025-09-10 09:11:35Z], 5] 00:09:24.671 [debug] QUERY OK source="media_items" db=0.9ms idle=4.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["100W Fiber Laser Marking and Engraving Marble \n\nThis video shows marble engraving using a DEKCEL 100W fiber laser marking machine. Perfect engraving results and fast engraving speed. With a traditional CO2 laser engraver, it takes nearly an hour to finish the 200mm x 252mm engraved image. With our 100W fiber laser marker, processing takes just 1′54′′, which is more efficient than ever before.\n\nFor a more detailed description of the laser marking machines, please visit our website: https://bit.ly/4dvrx6h\n\nDekcel CNC, with more than 10 years of experience in laser marking machines, can customize the machine according to your mark request.\n\nPlease offer me your marking request, and we will make a marking video for you and recommend the most suitable CNC marking machine with the best configuration.\n\nIf there is any issue with the laser marking machine, please let me know. Contact info is below \n\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsApp: +8613356681090\nE-mail: info@dekcelcnc.com\nWeChat:minzuiweixiao\nWeb: www.dekcelcncmachine.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "Marble Marking and Engraving with 100W Fiber Laser Marker Machine", "d91e34d9-ab64-4a44-af9b-65acc6b8e334", "https://www.youtube.com/watch?v=QGIZJ42cR8k", "QGIZJ42cR8k", false, 121, false, 3, "/downloads/DEKELCNC/2025-09-10 Marble Marking and Engraving with 100W Fiber Laser Marker Machine/Marble Marking and Engraving with 100W Fiber Laser Marker Machine [QGIZJ42cR8k].mkv", false, false, 5, [], 96, ~U[2025-09-10 09:11:35Z], ~U[2025-12-24 00:09:24Z], ~U[2025-12-24 00:09:24Z], "100W Fiber Laser Marking and Engraving Marble \n\nThis video shows marble engraving using a DEKCEL 100W fiber laser marking machine. Perfect engraving results and fast engraving speed. With a traditional CO2 laser engraver, it takes nearly an hour to finish the 200mm x 252mm engraved image. With our 100W fiber laser marker, processing takes just 1′54′′, which is more efficient than ever before.\n\nFor a more detailed description of the laser marking machines, please visit our website: https://bit.ly/4dvrx6h\n\nDekcel CNC, with more than 10 years of experience in laser marking machines, can customize the machine according to your mark request.\n\nPlease offer me your marking request, and we will make a marking video for you and recommend the most suitable CNC marking machine with the best configuration.\n\nIf there is any issue with the laser marking machine, please let me know. Contact info is below \n\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsApp: +8613356681090\nE-mail: info@dekcelcnc.com\nWeChat:minzuiweixiao\nWeb: www.dekcelcncmachine.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "Marble Marking and Engraving with 100W Fiber Laser Marker Machine", "https://www.youtube.com/watch?v=QGIZJ42cR8k", "QGIZJ42cR8k", 121, false, "/downloads/DEKELCNC/2025-09-10 Marble Marking and Engraving with 100W Fiber Laser Marker Machine/Marble Marking and Engraving with 100W Fiber Laser Marker Machine [QGIZJ42cR8k].mkv", false, 5, ~U[2025-09-10 09:11:35Z]] 00:09:24.671 [debug] QUERY OK source="sources" db=0.3ms idle=4.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 00:09:24.672 [debug] QUERY OK source="media_items" db=0.6ms 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[2025-09-10 03:22:15Z], 5] 00:09:24.673 [debug] QUERY OK source="media_items" db=0.7ms idle=3.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["How to Use the CCD Camera Xiao Software User Manual?\n\nThis CCD camera knife cutting machine is equipped with an advanced Vision system, camera automatic recognition and positioning, and cutting applied on printed fabric, acrylic, MDF wood board, PVC plastic, KT board, and so on.\n\nThis video will guide you on how to use and set the parameters for the CNC knife cutting machine‘s Xiao software.\n\nWe can customize the digital CNC knife-cutting machine according to your processing requirements. For more oscillating knife-cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/45VyrjG\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsApp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "How to Use CCD Camera |【Xiao 】Software User Manual?", "692526e8-e0dd-4206-ab85-07a547b3a614", "https://www.youtube.com/watch?v=eWRLXaZdtvs", "eWRLXaZdtvs", false, 188, false, 4, "/downloads/DEKELCNC/2025-09-10 How to Use CCD Camera |【Xiao 】Software User Manual?/How to Use CCD Camera |【Xiao 】Software User Manual? [eWRLXaZdtvs].mp4", false, false, 5, [], 96, ~U[2025-09-10 03:22:15Z], ~U[2025-12-24 00:09:24Z], ~U[2025-12-24 00:09:24Z], "How to Use the CCD Camera Xiao Software User Manual?\n\nThis CCD camera knife cutting machine is equipped with an advanced Vision system, camera automatic recognition and positioning, and cutting applied on printed fabric, acrylic, MDF wood board, PVC plastic, KT board, and so on.\n\nThis video will guide you on how to use and set the parameters for the CNC knife cutting machine‘s Xiao software.\n\nWe can customize the digital CNC knife-cutting machine according to your processing requirements. For more oscillating knife-cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/45VyrjG\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsApp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "How to Use CCD Camera |【Xiao 】Software User Manual?", "https://www.youtube.com/watch?v=eWRLXaZdtvs", "eWRLXaZdtvs", 188, false, "/downloads/DEKELCNC/2025-09-10 How to Use CCD Camera |【Xiao 】Software User Manual?/How to Use CCD Camera |【Xiao 】Software User Manual? [eWRLXaZdtvs].mp4", false, 5, ~U[2025-09-10 03:22:15Z]] 00:09:24.674 [debug] QUERY OK source="sources" db=0.3ms idle=4.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 00:09:24.675 [debug] QUERY OK source="media_items" db=0.7ms 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[2025-09-10 03:03:52Z], 5] 00:09:24.676 [debug] QUERY OK source="media_items" db=0.7ms idle=3.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Xiao Software Installation IP Setting for CNC Knife Cutting Machine\n\nVideo Index\n00:00 How to install Xiao software for CNC knifing cutting machine\n00:08 Unzip the Xiao software package and create a desktop shortcut\n00:38 IP setting for Xiao software\n01:04 Get machine parameters from controller\n\nWhen you receive your new oscillating knife cutting machine, this video will guide you through the installation of the software and the setup of the machine parameters.\n\nWe can customize the digital CNC knife-cutting machine according to your processing requirements. For more oscillating knife-cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/45VyrjG\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsApp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "How to Install Xiao Software | IP Setting for CNC Knife Cutting Machine", "1b261825-1b3b-4295-95db-955666bb5506", "https://www.youtube.com/watch?v=poF9_GtG3MQ", "poF9_GtG3MQ", false, 91, false, 5, "/downloads/DEKELCNC/2025-09-10 How to Install Xiao Software | IP Setting for CNC Knife Cutting Machine/How to Install Xiao Software | IP Setting for CNC Knife Cutting Machine [poF9_GtG3MQ].mp4", false, false, 5, [], 96, ~U[2025-09-10 03:03:52Z], ~U[2025-12-24 00:09:24Z], ~U[2025-12-24 00:09:24Z], "Xiao Software Installation IP Setting for CNC Knife Cutting Machine\n\nVideo Index\n00:00 How to install Xiao software for CNC knifing cutting machine\n00:08 Unzip the Xiao software package and create a desktop shortcut\n00:38 IP setting for Xiao software\n01:04 Get machine parameters from controller\n\nWhen you receive your new oscillating knife cutting machine, this video will guide you through the installation of the software and the setup of the machine parameters.\n\nWe can customize the digital CNC knife-cutting machine according to your processing requirements. For more oscillating knife-cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/45VyrjG\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsApp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "How to Install Xiao Software | IP Setting for CNC Knife Cutting Machine", "https://www.youtube.com/watch?v=poF9_GtG3MQ", "poF9_GtG3MQ", 91, false, "/downloads/DEKELCNC/2025-09-10 How to Install Xiao Software | IP Setting for CNC Knife Cutting Machine/How to Install Xiao Software | IP Setting for CNC Knife Cutting Machine [poF9_GtG3MQ].mp4", false, 5, ~U[2025-09-10 03:03:52Z]] 00:09:24.676 [debug] QUERY OK source="sources" db=0.3ms 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] 00:09:24.677 [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[2025-09-02 11:44:38Z], 5] 00:09:24.679 [debug] QUERY OK source="media_items" db=0.8ms idle=3.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["How to Table Calibration for CNC Knife Cutting Machine?\n\nWhile you get a new CNC knife cutting machine or the digital knife cutter machine has been used for a few years, and the machine table surface accuracy is not correct, this video will show you how to use the tools to calibrate the digital knife cutting machine processing table.\n\nWe can customize the digital CNC knife-cutting machine according to your processing requirements. For more oscillating knife-cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/45VyrjG\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsApp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "How to Table Calibration for CNC Knife Cutting Machine?", "5c9c75e4-6e7f-4369-a72e-68806c7db42f", "https://www.youtube.com/watch?v=SQM_9rTu3Bw", "SQM_9rTu3Bw", false, 119, false, 6, "/downloads/DEKELCNC/2025-09-02 How to Table Calibration for CNC Knife Cutting Machine?/How to Table Calibration for CNC Knife Cutting Machine? [SQM_9rTu3Bw].mkv", false, false, 5, [], 98, ~U[2025-09-02 11:44:38Z], ~U[2025-12-24 00:09:24Z], ~U[2025-12-24 00:09:24Z], "How to Table Calibration for CNC Knife Cutting Machine?\n\nWhile you get a new CNC knife cutting machine or the digital knife cutter machine has been used for a few years, and the machine table surface accuracy is not correct, this video will show you how to use the tools to calibrate the digital knife cutting machine processing table.\n\nWe can customize the digital CNC knife-cutting machine according to your processing requirements. For more oscillating knife-cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/45VyrjG\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsApp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "How to Table Calibration for CNC Knife Cutting Machine?", "https://www.youtube.com/watch?v=SQM_9rTu3Bw", "SQM_9rTu3Bw", 119, false, "/downloads/DEKELCNC/2025-09-02 How to Table Calibration for CNC Knife Cutting Machine?/How to Table Calibration for CNC Knife Cutting Machine? [SQM_9rTu3Bw].mkv", false, 5, ~U[2025-09-02 11:44:38Z]] 00:09:24.679 [debug] QUERY OK source="sources" db=0.3ms idle=4.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 00:09:24.681 [debug] QUERY OK source="media_items" db=1.3ms 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[2025-06-24 08:51:59Z], 5] 00:09:24.682 [debug] QUERY OK source="media_items" db=0.8ms idle=4.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Large Format Marble, Granite, Stone Fly Marking | 100W Fiber Laser Marker Machine \n\nWith a larger-format DEK-1325J fiber 100W laser marking machine, you can easily make large-sized pattern markings on marble, granite, and stone materials. You only need to import the marking file into the software, and the machine will do the pattern processing automatically.\n\nNow, with our machine, you can also mark a frosted effect on glass, remove the paint layer on a mirror, cut holes in glass, etc.\n\nMachine Description\n# Working area 1300mm*2500mm\n# Fly marking control system\n# Fiber 100W laser generator\n# Gera and rack transmission system\n# fly marking on glass, mirror, marble\n# coating paint removing for the mirror\n# frosted effect engraving for glass\n# hole cutting for glass\n\nFor details of this large-format laser marking machine, please visit our website:https://bit.ly/4ekFvcb\n\nPlease offer me your request, and we will make a testing video for you and recommend the most suitable laser marking machine with the best configuration.\n\nAny issues with the machine, please let me know. Contact info as below \nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsapp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com \n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "Large Format Fly Marking Marble, Granite, Stone | 100W Fiber Laser Machine", "a7decf6d-5ed8-4232-a53e-c2e38b7c20fb", "https://www.youtube.com/watch?v=NonmdzkE7aA", "NonmdzkE7aA", false, 121, false, 7, "/downloads/DEKELCNC/2025-06-24 Large Format Fly Marking Marble, Granite, Stone | 100W Fiber Laser Machine/Large Format Fly Marking Marble, Granite, Stone | 100W Fiber Laser Machine [NonmdzkE7aA].mkv", false, false, 5, [], 97, ~U[2025-06-24 08:51:59Z], ~U[2025-12-24 00:09:24Z], ~U[2025-12-24 00:09:24Z], "Large Format Marble, Granite, Stone Fly Marking | 100W Fiber Laser Marker Machine \n\nWith a larger-format DEK-1325J fiber 100W laser marking machine, you can easily make large-sized pattern markings on marble, granite, and stone materials. You only need to import the marking file into the software, and the machine will do the pattern processing automatically.\n\nNow, with our machine, you can also mark a frosted effect on glass, remove the paint layer on a mirror, cut holes in glass, etc.\n\nMachine Description\n# Working area 1300mm*2500mm\n# Fly marking control system\n# Fiber 100W laser generator\n# Gera and rack transmission system\n# fly marking on glass, mirror, marble\n# coating paint removing for the mirror\n# frosted effect engraving for glass\n# hole cutting for glass\n\nFor details of this large-format laser marking machine, please visit our website:https://bit.ly/4ekFvcb\n\nPlease offer me your request, and we will make a testing video for you and recommend the most suitable laser marking machine with the best configuration.\n\nAny issues with the machine, please let me know. Contact info as below \nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsapp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com \n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "Large Format Fly Marking Marble, Granite, Stone | 100W Fiber Laser Machine", "https://www.youtube.com/watch?v=NonmdzkE7aA", "NonmdzkE7aA", 121, false, "/downloads/DEKELCNC/2025-06-24 Large Format Fly Marking Marble, Granite, Stone | 100W Fiber Laser Machine/Large Format Fly Marking Marble, Granite, Stone | 100W Fiber Laser Machine [NonmdzkE7aA].mkv", false, 5, ~U[2025-06-24 08:51:59Z]] 00:09:24.682 [debug] QUERY OK source="sources" db=0.2ms queue=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" = ?) [5] 00:09:24.683 [debug] QUERY OK source="media_items" db=0.7ms 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[2025-06-11 07:25:56Z], 5] 00:09:24.685 [debug] QUERY OK source="media_items" db=1.1ms idle=4.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Faux PU Leather Fabrics Knife Cutting Machine\n\nDEKCEL automatic leather CNC knife cutting machines are highly efficient and precise cutting devices widely used in the processing of synthetic leather, artificial leather, faux leather, PU leather, and vinyl leather materials. Their working principle involves cutting with a high-frequency vibrating blade, offering fast speed and high precision, making them particularly suitable for industries such as sofas and clothing that demand complex shapes and high efficiency. \n\nCompared to laser cutting, vibration knife cutting machines do not burn the edges of materials due to high temperatures, avoiding issues like edge yellowing or hardening, and they do not produce harmful smoke, making them more environmentally friendly and safer. Additionally, vibration knife-cutting machines support a variety of material thicknesses, enabling them to easily handle cutting tasks ranging from thin fabrics to thick leather.\n\nMoreover, the leather cutting machine is equipped with a marking pen function, which can draw the name and batch number of each component before cutting, facilitating differentiation and management and avoiding confusion during the production process.\n\nWith a high degree of automation, it can be paired with CAD design software to achieve precise layout and batch production, significantly improving production efficiency and reducing labor costs. In summary, with its efficient, eco-friendly, and precise features, the vibration knife-cutting machine has become an essential tool in the modern leather processing industry.\n\nWe can customize the leather CNC knife-cutting machine according to your processing requirements. For more leather oscillating knife-cutting machines, please visit our catalog of digital knife-cutter plotter machines: (https://bit.ly/4dB0eq7)\n\nPlease send me your leather-cutting request. We will create a cutting video and recommend the most suitable digital knife-cutting machine with the best configuration.\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsapp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "Faux PU Leather Fabrics Knife Cutting Machine", "b281542e-c8f8-4445-9ae1-b750da3c8ece", "https://www.youtube.com/watch?v=WHZ1k5CelfE", "WHZ1k5CelfE", false, 91, false, 8, "/downloads/DEKELCNC/2025-06-11 Faux PU Leather Fabrics Knife Cutting Machine/Faux PU Leather Fabrics Knife Cutting Machine [WHZ1k5CelfE].mkv", false, false, 5, [], 96, ~U[2025-06-11 07:25:56Z], ~U[2025-12-24 00:09:24Z], ~U[2025-12-24 00:09:24Z], "Faux PU Leather Fabrics Knife Cutting Machine\n\nDEKCEL automatic leather CNC knife cutting machines are highly efficient and precise cutting devices widely used in the processing of synthetic leather, artificial leather, faux leather, PU leather, and vinyl leather materials. Their working principle involves cutting with a high-frequency vibrating blade, offering fast speed and high precision, making them particularly suitable for industries such as sofas and clothing that demand complex shapes and high efficiency. \n\nCompared to laser cutting, vibration knife cutting machines do not burn the edges of materials due to high temperatures, avoiding issues like edge yellowing or hardening, and they do not produce harmful smoke, making them more environmentally friendly and safer. Additionally, vibration knife-cutting machines support a variety of material thicknesses, enabling them to easily handle cutting tasks ranging from thin fabrics to thick leather.\n\nMoreover, the leather cutting machine is equipped with a marking pen function, which can draw the name and batch number of each component before cutting, facilitating differentiation and management and avoiding confusion during the production process.\n\nWith a high degree of automation, it can be paired with CAD design software to achieve precise layout and batch production, significantly improving production efficiency and reducing labor costs. In summary, with its efficient, eco-friendly, and precise features, the vibration knife-cutting machine has become an essential tool in the modern leather processing industry.\n\nWe can customize the leather CNC knife-cutting machine according to your processing requirements. For more leather oscillating knife-cutting machines, please visit our catalog of digital knife-cutter plotter machines: (https://bit.ly/4dB0eq7)\n\nPlease send me your leather-cutting request. We will create a cutting video and recommend the most suitable digital knife-cutting machine with the best configuration.\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsapp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for your watching", "Faux PU Leather Fabrics Knife Cutting Machine", "https://www.youtube.com/watch?v=WHZ1k5CelfE", "WHZ1k5CelfE", 91, false, "/downloads/DEKELCNC/2025-06-11 Faux PU Leather Fabrics Knife Cutting Machine/Faux PU Leather Fabrics Knife Cutting Machine [WHZ1k5CelfE].mkv", false, 5, ~U[2025-06-11 07:25:56Z]] 00:09:24.685 [debug] QUERY OK source="sources" db=0.2ms idle=4.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 00:09:24.686 [debug] QUERY OK source="media_items" db=0.8ms 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[2025-06-11 03:07:08Z], 5] 00:09:24.687 [debug] QUERY OK source="media_items" db=0.7ms idle=4.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["DEKCEL® 12mm Neoprene Rubber Oscillating Knife Cutting Machine \n\nOur Rubber CNC knife-cutting machine is equipped with a high-power 400W EOT tool, the rubber cutting edge is fine, and it is free of debris or residual particles.\n\nWe can customize the rubber cutting machine according to your processing requirements. For more rubber cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/4dB0eq7\n\nPlease send me your rubber cutting request. We will create a cutting video and recommend the most suitable digital knife-cutting machine with the best configuration.\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsapp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for watching", "DEKCEL® 12mm Neoprene Rubber Sheet Oscillating Knife Cutting Machine", "515159d5-250c-4833-a70e-71e62a028596", "https://www.youtube.com/watch?v=NpnyVsjkI6A", "NpnyVsjkI6A", false, 110, false, 9, "/downloads/DEKELCNC/2025-06-11 DEKCEL® 12mm Neoprene Rubber Sheet Oscillating Knife Cutting Machine/DEKCEL® 12mm Neoprene Rubber Sheet Oscillating Knife Cutting Machine [NpnyVsjkI6A].mkv", false, false, 5, [], 96, ~U[2025-06-11 03:07:08Z], ~U[2025-12-24 00:09:24Z], ~U[2025-12-24 00:09:24Z], "DEKCEL® 12mm Neoprene Rubber Oscillating Knife Cutting Machine \n\nOur Rubber CNC knife-cutting machine is equipped with a high-power 400W EOT tool, the rubber cutting edge is fine, and it is free of debris or residual particles.\n\nWe can customize the rubber cutting machine according to your processing requirements. For more rubber cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/4dB0eq7\n\nPlease send me your rubber cutting request. We will create a cutting video and recommend the most suitable digital knife-cutting machine with the best configuration.\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsapp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for watching", "DEKCEL® 12mm Neoprene Rubber Sheet Oscillating Knife Cutting Machine", "https://www.youtube.com/watch?v=NpnyVsjkI6A", "NpnyVsjkI6A", 110, false, "/downloads/DEKELCNC/2025-06-11 DEKCEL® 12mm Neoprene Rubber Sheet Oscillating Knife Cutting Machine/DEKCEL® 12mm Neoprene Rubber Sheet Oscillating Knife Cutting Machine [NpnyVsjkI6A].mkv", false, 5, ~U[2025-06-11 03:07:08Z]] 00:09:24.688 [debug] QUERY OK source="sources" db=0.2ms queue=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" = ?) [5] 00:09:24.689 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-06-11 02:51:28Z], 5] 00:09:24.690 [debug] QUERY OK source="media_items" db=0.6ms idle=3.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["3MM Rubber Gasket Cutting Machine\n\nOur rubber cutting machine is equipped with a 400W EOT tool with high processing accuracy and performs very well. \n\nWe can customize the rubber cutting machine according to your processing requirements. For more rubber cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/4dB0eq7\n\nPlease send me your rubber cutting request. We will create a cutting video and recommend the most suitable digital knife-cutting machine with the best configuration.\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsapp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for watching", "3MM Neoprene Rubber Sheet Gasket Knife Cutting Machine", "f3c49e68-4f3c-4fee-88da-7ec66fb92fcc", "https://www.youtube.com/watch?v=61L_GF-QIrU", "61L_GF-QIrU", false, 47, false, 10, "/downloads/DEKELCNC/2025-06-11 3MM Neoprene Rubber Sheet Gasket Knife Cutting Machine/3MM Neoprene Rubber Sheet Gasket Knife Cutting Machine [61L_GF-QIrU].mkv", false, false, 5, [], 96, ~U[2025-06-11 02:51:28Z], ~U[2025-12-24 00:09:24Z], ~U[2025-12-24 00:09:24Z], "3MM Rubber Gasket Cutting Machine\n\nOur rubber cutting machine is equipped with a 400W EOT tool with high processing accuracy and performs very well. \n\nWe can customize the rubber cutting machine according to your processing requirements. For more rubber cutting machines, please visit our catalog of digital knife-cutter plotter machines: https://bit.ly/4dB0eq7\n\nPlease send me your rubber cutting request. We will create a cutting video and recommend the most suitable digital knife-cutting machine with the best configuration.\n\nIf there is any issue with the machine, please let me know. Contact info is below :\nJINAN DEKCEL CNC EQUIPMENT CO., LTD\nWhatsapp: +8613356681090\nE-mail: info@dekcelcnc.com\nSkype:dekcelcnc\nWeb: www.dekcel-cnc.com\n\nDEKCEL CNC Sincerely At Your Service.\n\nThanks for watching", "3MM Neoprene Rubber Sheet Gasket Knife Cutting Machine", "https://www.youtube.com/watch?v=61L_GF-QIrU", "61L_GF-QIrU", 47, false, "/downloads/DEKELCNC/2025-06-11 3MM Neoprene Rubber Sheet Gasket Knife Cutting Machine/3MM Neoprene Rubber Sheet Gasket Knife Cutting Machine [61L_GF-QIrU].mkv", false, 5, ~U[2025-06-11 02:51:28Z]] 00:09:24.690 [debug] QUERY OK source="sources" db=0.2ms idle=3.5ms UPDATE "sources" SET "last_indexed_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2025-12-24 00:09:24Z], ~U[2025-12-24 00:09:24Z], 5] 00:09:24.691 [debug] QUERY OK source="media_items" db=0.5ms 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")))) [5] 00:09:24.692 [debug] QUERY OK source="media_items" db=0.6ms idle=3.1ms 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] 00:09:24.692 [debug] QUERY OK source="media_items" db=0.2ms idle=3.1ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [5] 00:09:24.693 [debug] QUERY OK source="tasks" db=0.2ms idle=2.3ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [7411, 5, ~U[2025-12-24 00:09:24Z], ~U[2025-12-24 00:09:24Z]] 00:09:24.694 [info] {"args":{"id":5},"id":7395,"meta":{},"state":"success","max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","duration":18142076,"event":"job:stop","queue_time":68976,"attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 00:09:49.663 [info] {"source":"oban","duration":1122,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:10:00.010 [info] {"source":"oban","duration":682,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:10:19.666 [info] {"source":"oban","duration":1935,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:10:49.668 [info] {"source":"oban","duration":1054,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:11:00.011 [info] {"source":"oban","duration":344,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:11:19.670 [info] {"source":"oban","duration":1035,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:11:49.672 [info] {"source":"oban","duration":861,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:12:00.013 [info] {"source":"oban","duration":1152,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:12:19.674 [info] {"source":"oban","duration":812,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:12:49.676 [info] {"source":"oban","duration":844,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:13:00.015 [info] {"source":"oban","duration":443,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:13:19.678 [info] {"source":"oban","duration":990,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:13:49.680 [info] {"source":"oban","duration":1562,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:14:00.017 [info] {"source":"oban","duration":628,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:14:19.682 [info] {"source":"oban","duration":931,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:14:49.684 [info] {"source":"oban","duration":1116,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:15:00.019 [info] {"source":"oban","duration":673,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:15:19.687 [info] {"source":"oban","duration":1318,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:15:49.689 [info] {"source":"oban","duration":1449,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:16:00.020 [info] {"source":"oban","duration":317,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:16:19.691 [info] {"source":"oban","duration":1201,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:16:49.693 [info] {"source":"oban","duration":765,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:17:00.022 [info] {"source":"oban","duration":675,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:17:19.695 [info] {"source":"oban","duration":871,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:17:49.698 [info] {"source":"oban","duration":1723,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:18:00.023 [info] {"source":"oban","duration":546,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:18:19.698 [info] {"source":"oban","duration":608,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:18:49.700 [info] {"source":"oban","duration":1413,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:19:00.025 [info] {"source":"oban","duration":673,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:19:19.702 [info] {"source":"oban","duration":846,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:19:49.704 [info] {"source":"oban","duration":825,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:20:00.026 [info] {"source":"oban","duration":375,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:20:19.706 [info] {"source":"oban","duration":1104,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:20:49.708 [info] {"source":"oban","duration":1598,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:21:00.027 [info] {"source":"oban","duration":299,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:21:19.710 [info] {"source":"oban","duration":1053,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:21:49.712 [info] {"source":"oban","duration":1465,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:22:00.028 [info] {"source":"oban","duration":306,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:22:19.714 [info] {"source":"oban","duration":1569,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:22:49.716 [info] {"source":"oban","duration":1436,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:23:00.029 [info] {"source":"oban","duration":309,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:23:19.718 [info] {"source":"oban","duration":1051,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:23:49.720 [info] {"source":"oban","duration":1296,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:24:00.031 [info] {"source":"oban","duration":981,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:24:19.722 [info] {"source":"oban","duration":1488,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:24:49.724 [info] {"source":"oban","duration":822,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:25:00.033 [info] {"source":"oban","duration":506,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:25:19.729 [info] {"source":"oban","duration":1860,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:25:49.730 [info] {"source":"oban","duration":651,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:26:00.035 [info] {"source":"oban","duration":953,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:26:19.732 [info] {"source":"oban","duration":1090,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:26:49.734 [info] {"source":"oban","duration":1356,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:27:00.037 [info] {"source":"oban","duration":456,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:27:19.736 [info] {"source":"oban","duration":1213,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:27:49.738 [info] {"source":"oban","duration":1210,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:28:00.039 [info] {"source":"oban","duration":287,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:28:19.740 [info] {"source":"oban","duration":1244,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:28:49.742 [info] {"source":"oban","duration":1349,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:29:00.041 [info] {"source":"oban","duration":241,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:29:19.744 [info] {"source":"oban","duration":1398,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:29:49.746 [info] {"source":"oban","duration":1391,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:30:00.043 [info] {"source":"oban","duration":550,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:30:19.748 [info] {"source":"oban","duration":877,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:30:49.751 [info] {"source":"oban","duration":1731,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:31:00.045 [info] {"source":"oban","duration":732,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:31:19.753 [info] {"source":"oban","duration":1395,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:31:49.755 [info] {"source":"oban","duration":1590,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:32:00.047 [info] {"source":"oban","duration":629,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:32:19.757 [info] {"source":"oban","duration":1292,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:32:49.759 [info] {"source":"oban","duration":927,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:33:00.049 [info] {"source":"oban","duration":705,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:33:19.762 [info] {"source":"oban","duration":1133,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:33:49.764 [info] {"source":"oban","duration":1097,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:34:00.051 [info] {"source":"oban","duration":474,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:34:19.766 [info] {"source":"oban","duration":1042,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:34:49.768 [info] {"source":"oban","duration":996,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:35:00.052 [info] {"source":"oban","duration":374,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:35:19.770 [info] {"source":"oban","duration":1601,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:35:49.772 [info] {"source":"oban","duration":936,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:36:00.054 [info] {"source":"oban","duration":632,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:36:19.774 [info] {"source":"oban","duration":1481,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:36:49.776 [info] {"source":"oban","duration":1276,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:37:00.055 [info] {"source":"oban","duration":251,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:37:19.778 [info] {"source":"oban","duration":839,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:37:49.780 [info] {"source":"oban","duration":1420,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:38:00.057 [info] {"source":"oban","duration":579,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:38:19.783 [info] {"source":"oban","duration":1658,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:38:49.784 [info] {"source":"oban","duration":1450,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:39:00.059 [info] {"source":"oban","duration":591,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:39:19.787 [info] {"source":"oban","duration":1917,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:39:49.789 [info] {"source":"oban","duration":1306,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:40:00.060 [info] {"source":"oban","duration":549,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:40:19.791 [info] {"source":"oban","duration":1430,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:40:49.793 [info] {"source":"oban","duration":693,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:41:00.063 [info] {"source":"oban","duration":855,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:41:19.795 [info] {"source":"oban","duration":1270,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:41:49.798 [info] {"source":"oban","duration":1809,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:42:00.064 [info] {"source":"oban","duration":429,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:42:19.800 [info] {"source":"oban","duration":1226,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:42:49.802 [info] {"source":"oban","duration":1147,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:43:00.065 [info] {"source":"oban","duration":291,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:43:19.804 [info] {"source":"oban","duration":796,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:43:49.806 [info] {"source":"oban","duration":1065,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:44:00.066 [info] {"source":"oban","duration":381,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:44:19.808 [info] {"source":"oban","duration":1038,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:44:49.810 [info] {"source":"oban","duration":1167,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:45:00.068 [info] {"source":"oban","duration":823,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:45:19.812 [info] {"source":"oban","duration":1016,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:45:49.814 [info] {"source":"oban","duration":1613,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:46:00.070 [info] {"source":"oban","duration":481,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:46:19.816 [info] {"source":"oban","duration":1287,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:46:49.818 [info] {"source":"oban","duration":1306,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:47:00.071 [info] {"source":"oban","duration":331,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:47:19.819 [info] {"source":"oban","duration":687,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:47:49.821 [info] {"source":"oban","duration":781,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:48:00.072 [info] {"source":"oban","duration":453,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:48:19.823 [info] {"source":"oban","duration":1337,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:48:49.825 [info] {"source":"oban","duration":1407,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:49:00.073 [info] {"source":"oban","duration":623,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:49:19.826 [info] {"source":"oban","duration":572,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:49:49.828 [info] {"source":"oban","duration":1164,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:50:00.075 [info] {"source":"oban","duration":732,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:50:19.830 [info] {"source":"oban","duration":1192,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:50:49.832 [info] {"source":"oban","duration":1546,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:51:00.077 [info] {"source":"oban","duration":686,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:51:19.834 [info] {"source":"oban","duration":1121,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:51:49.835 [info] {"source":"oban","duration":531,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:52:00.078 [info] {"source":"oban","duration":439,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:52:19.837 [info] {"source":"oban","duration":1344,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:52:49.839 [info] {"source":"oban","duration":1617,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:53:00.080 [info] {"source":"oban","duration":608,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:53:19.841 [info] {"source":"oban","duration":1730,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:53:49.843 [info] {"source":"oban","duration":1600,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:54:00.081 [info] {"source":"oban","duration":314,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:54:19.846 [info] {"source":"oban","duration":1770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:54:49.849 [info] {"source":"oban","duration":1852,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:55:00.082 [info] {"source":"oban","duration":380,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:55:19.851 [info] {"source":"oban","duration":1570,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:55:49.853 [info] {"source":"oban","duration":872,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:56:00.084 [info] {"source":"oban","duration":559,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:56:19.855 [info] {"source":"oban","duration":1200,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:56:49.857 [info] {"source":"oban","duration":1433,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:57:00.086 [info] {"source":"oban","duration":859,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:57:19.859 [info] {"source":"oban","duration":1070,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:57:49.860 [info] {"source":"oban","duration":708,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:58:00.088 [info] {"source":"oban","duration":640,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:58:19.863 [info] {"source":"oban","duration":1722,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:58:49.865 [info] {"source":"oban","duration":1505,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:59:00.089 [info] {"source":"oban","duration":397,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 00:59:19.867 [info] {"source":"oban","duration":1576,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 00:59:49.869 [info] {"source":"oban","duration":1024,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:00:00.092 [info] {"source":"oban","duration":2273,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[7412]} 01:00:00.099 [info] {"args":{},"id":7412,"meta":{"cron":true,"cron_expr":"0 1 * * *","cron_tz":"Etc/UTC"},"system_time":1766538000099533154,"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.106 [debug] QUERY OK source="media_items" db=6.0ms idle=989.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" 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.106 [info] Culling 0 media items past their retention date 01:00:00.111 [debug] QUERY OK source="media_items" db=4.8ms idle=995.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 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.111 [info] Deleting 0 media items that are from before the source cutoff 01:00:00.111 [info] {"args":{},"id":7412,"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":11754,"event":"job:stop","queue_time":98375,"attempt":1,"tags":["media_item","local_data"]} 01:00:19.872 [info] {"source":"oban","duration":1722,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:00:49.874 [info] {"source":"oban","duration":1028,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:01:00.094 [info] {"source":"oban","duration":695,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:01:19.877 [info] {"source":"oban","duration":1809,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:01:49.879 [info] {"source":"oban","duration":1493,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:02:00.096 [info] {"source":"oban","duration":658,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:02:19.881 [info] {"source":"oban","duration":1192,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:02:49.883 [info] {"source":"oban","duration":1223,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:03:00.097 [info] {"source":"oban","duration":569,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:03:19.885 [info] {"source":"oban","duration":1347,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:03:49.887 [info] {"source":"oban","duration":1586,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:04:00.098 [info] {"source":"oban","duration":455,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:04:19.889 [info] {"source":"oban","duration":1192,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:04:49.891 [info] {"source":"oban","duration":902,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:05:00.100 [info] {"source":"oban","duration":599,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:05:19.893 [info] {"source":"oban","duration":867,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:05:49.895 [info] {"source":"oban","duration":1537,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:06:00.102 [info] {"source":"oban","duration":745,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:06:19.897 [info] {"source":"oban","duration":1367,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":1} 01:06:49.899 [info] {"source":"oban","duration":1589,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:07:00.103 [info] {"source":"oban","duration":460,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:07:19.901 [info] {"source":"oban","duration":1529,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:07:49.903 [info] {"source":"oban","duration":1492,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:08:00.104 [info] {"source":"oban","duration":554,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:08:19.905 [info] {"source":"oban","duration":1511,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:08:49.907 [info] {"source":"oban","duration":1455,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:09:00.105 [info] {"source":"oban","duration":363,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:09:19.909 [info] {"source":"oban","duration":1581,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:09:49.912 [info] {"source":"oban","duration":1660,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:10:00.107 [info] {"source":"oban","duration":1070,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:10:19.914 [info] {"source":"oban","duration":1636,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:10:49.915 [info] {"source":"oban","duration":1033,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:11:00.109 [info] {"source":"oban","duration":577,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:11:19.917 [info] {"source":"oban","duration":1412,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:11:49.919 [info] {"source":"oban","duration":809,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:12:00.110 [info] {"source":"oban","duration":271,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:12:19.921 [info] {"source":"oban","duration":874,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:12:49.923 [info] {"source":"oban","duration":1454,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:13:00.112 [info] {"source":"oban","duration":526,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:13:19.925 [info] {"source":"oban","duration":1025,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:13:49.927 [info] {"source":"oban","duration":743,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:14:00.113 [info] {"source":"oban","duration":313,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:14:19.929 [info] {"source":"oban","duration":1729,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:14:49.931 [info] {"source":"oban","duration":1279,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:15:00.114 [info] {"source":"oban","duration":237,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:15:19.933 [info] {"source":"oban","duration":1354,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:15:49.935 [info] {"source":"oban","duration":962,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:16:00.115 [info] {"source":"oban","duration":227,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:16:19.937 [info] {"source":"oban","duration":1054,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:16:49.940 [info] {"source":"oban","duration":1967,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:17:00.117 [info] {"source":"oban","duration":486,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:17:19.942 [info] {"source":"oban","duration":726,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:17:49.944 [info] {"source":"oban","duration":1361,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:18:00.118 [info] {"source":"oban","duration":318,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:18:19.946 [info] {"source":"oban","duration":904,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:18:49.948 [info] {"source":"oban","duration":1580,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:19:00.119 [info] {"source":"oban","duration":370,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:19:19.951 [info] {"source":"oban","duration":970,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:19:49.953 [info] {"source":"oban","duration":1555,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:20:00.120 [info] {"source":"oban","duration":351,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:20:19.955 [info] {"source":"oban","duration":1012,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:20:49.957 [info] {"source":"oban","duration":1507,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:21:00.121 [info] {"source":"oban","duration":569,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:21:19.959 [info] {"source":"oban","duration":994,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:21:49.961 [info] {"source":"oban","duration":1059,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:22:00.123 [info] {"source":"oban","duration":421,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:22:19.963 [info] {"source":"oban","duration":1053,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:22:49.965 [info] {"source":"oban","duration":1148,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:23:00.124 [info] {"source":"oban","duration":224,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:23:19.968 [info] {"source":"oban","duration":1848,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:23:49.971 [info] {"source":"oban","duration":1766,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:24:00.126 [info] {"source":"oban","duration":398,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:24:19.973 [info] {"source":"oban","duration":777,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:24:49.975 [info] {"source":"oban","duration":842,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:25:00.126 [info] {"source":"oban","duration":407,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:25:19.977 [info] {"source":"oban","duration":1650,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:25:49.979 [info] {"source":"oban","duration":1232,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:26:00.127 [info] {"source":"oban","duration":510,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:26:19.981 [info] {"source":"oban","duration":1091,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:26:22.388 [info] {"args":{"id":4},"id":7399,"meta":{},"system_time":1766539582388467670,"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"]} 01:26:22.389 [debug] QUERY OK source="sources" db=0.2ms idle=1274.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:26:22.389 [debug] QUERY OK source="settings" db=0.1ms idle=1274.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:26:22.393 [debug] QUERY OK source="media_items" db=3.5ms idle=1010.1ms 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] 01:26:22.394 [debug] QUERY OK source="media_items" db=0.6ms idle=11.4ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [4] 01:26:22.394 [debug] QUERY OK source="media_profiles" db=0.1ms idle=5.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 01:26:22.394 [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 [] 01:26:22.395 [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 [] 01:26:22.412 [debug] QUERY OK source="media_items" db=2.5ms idle=16.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 [4] 01:26:22.414 [debug] Running yt-dlp command for action: get_media_attributes_for_collection 01:26:22.414 [debug] Current batch of media processed. Will check again in 1000ms 01:26:22.414 [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 [] 01:26:22.414 [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 [] 01:26:22.415 [debug] QUERY OK source="settings" db=0.1ms idle=20.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:26:22.415 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@%EC%A1%B0%EC%9D%80%EB%AF%B8%EC%8B%B1 --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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/f3/25/f3252b08e203c9e80accd3514c9241b8673f01b7a2b649748fe43c147198d021.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/5b/65/5b653e0b496630159c59a5f937328bbbcac4d7b42effe0cea5dfa3c81e84929b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 01:26:23.415 [debug] Current batch of media processed. Will check again in 1000ms 01:26:24.416 [debug] Current batch of media processed. Will check again in 1000ms 01:26:25.417 [debug] Current batch of media processed. Will check again in 1000ms 01:26:26.418 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "duration" => 67, "filename" => "/downloads/조은미싱/2025-12-22 (판매완료) 주키 DDL-8000C 본봉사절미싱 전시중고 139만원/(판매완료) 주키 DDL-8000C 본봉사절미싱 전시중고 139만원 [OMj_7N008C4].mkv", "id" => "OMj_7N008C4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=OMj_7N008C4", "playlist_index" => 1, "timestamp" => 1766392578, "title" => "(판매완료) 주키 DDL-8000C 본봉사절미싱 전시중고 139만원", "upload_date" => "20251222"} 01:26:26.419 [debug] QUERY OK source="sources" db=0.2ms idle=304.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:26:26.419 [debug] QUERY OK source="sources" db=0.1ms idle=305.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:26:26.422 [debug] QUERY OK source="media_items" db=2.9ms idle=305.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-22 08:36:18Z], 4] 01:26:26.424 [debug] QUERY OK source="media_items" db=1.0ms idle=308.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 주키 DDL-8000C 본봉사절미싱 전시중고 139만원", "2d016aff-b95d-486b-8dd3-53dc5f750f01", "https://www.youtube.com/watch?v=OMj_7N008C4", "OMj_7N008C4", false, 67, false, 1, "/downloads/조은미싱/2025-12-22 (판매완료) 주키 DDL-8000C 본봉사절미싱 전시중고 139만원/(판매완료) 주키 DDL-8000C 본봉사절미싱 전시중고 139만원 [OMj_7N008C4].mkv", false, false, 4, [], 98, ~U[2025-12-22 08:36:18Z], ~U[2025-12-24 01:26:26Z], ~U[2025-12-24 01:26:26Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 주키 DDL-8000C 본봉사절미싱 전시중고 139만원", "https://www.youtube.com/watch?v=OMj_7N008C4", "OMj_7N008C4", 67, false, "/downloads/조은미싱/2025-12-22 (판매완료) 주키 DDL-8000C 본봉사절미싱 전시중고 139만원/(판매완료) 주키 DDL-8000C 본봉사절미싱 전시중고 139만원 [OMj_7N008C4].mkv", false, 4, ~U[2025-12-22 08:36:18Z]] 01:26:26.425 [debug] QUERY OK source="sources" db=0.7ms idle=34.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] 01:26:26.425 [debug] QUERY OK source="media_profiles" db=0.2ms idle=6.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 01:26:26.426 [debug] QUERY OK source="media_items" db=0.2ms idle=6.1ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [28910] 01:26:26.426 [info] Kicking off download for media item #28910 (OMj_7N008C4) 01:26:26.427 [debug] Current batch of media processed. Will check again in 1000ms 01:26:27.428 [debug] Current batch of media processed. Will check again in 1000ms 01:26:28.429 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "duration" => 71, "filename" => "/downloads/조은미싱/2025-12-19 부라더 ZM-8500-001 지그재그 중고 (일제) 120만원/부라더 ZM-8500-001 지그재그 중고 (일제) 120만원 [8_zxmaa0Ymw].mkv", "id" => "8_zxmaa0Ymw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=8_zxmaa0Ymw", "playlist_index" => 2, "timestamp" => 1766138431, "title" => "부라더 ZM-8500-001 지그재그 중고 (일제) 120만원", "upload_date" => "20251219"} 01:26:28.430 [debug] QUERY OK source="sources" db=0.2ms idle=315.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:26:28.430 [debug] QUERY OK source="sources" db=0.1ms idle=315.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:26:28.433 [debug] QUERY OK source="media_items" db=2.6ms idle=316.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-19 10:00:31Z], 4] 01:26:28.434 [debug] QUERY OK source="media_items" db=0.8ms idle=319.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "부라더 ZM-8500-001 지그재그 중고 (일제) 120만원", "1d885c69-94c1-4162-9fc1-d72bf838ecf6", "https://www.youtube.com/watch?v=8_zxmaa0Ymw", "8_zxmaa0Ymw", false, 71, false, 2, "/downloads/조은미싱/2025-12-19 부라더 ZM-8500-001 지그재그 중고 (일제) 120만원/부라더 ZM-8500-001 지그재그 중고 (일제) 120만원 [8_zxmaa0Ymw].mkv", false, false, 4, [], 98, ~U[2025-12-19 10:00:31Z], ~U[2025-12-24 01:26:28Z], ~U[2025-12-24 01:26:28Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "부라더 ZM-8500-001 지그재그 중고 (일제) 120만원", "https://www.youtube.com/watch?v=8_zxmaa0Ymw", "8_zxmaa0Ymw", 71, false, "/downloads/조은미싱/2025-12-19 부라더 ZM-8500-001 지그재그 중고 (일제) 120만원/부라더 ZM-8500-001 지그재그 중고 (일제) 120만원 [8_zxmaa0Ymw].mkv", false, 4, ~U[2025-12-19 10:00:31Z]] 01:26:28.435 [debug] QUERY OK source="sources" db=0.2ms idle=40.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 01:26:28.435 [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] 01:26:28.436 [debug] QUERY OK source="media_items" db=0.2ms 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 [28076] 01:26:28.436 [info] Kicking off download for media item #28076 (8_zxmaa0Ymw) 01:26:28.437 [debug] Current batch of media processed. Will check again in 1000ms 01:26:29.438 [debug] Current batch of media processed. Will check again in 1000ms 01:26:30.440 [debug] Current batch of media processed. Will check again in 1000ms 01:26:31.442 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "duration" => 105, "filename" => "/downloads/조은미싱/2025-12-17 (판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 85만원/(판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 85만원 [h-LWWCXvTrM].mkv", "id" => "h-LWWCXvTrM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=h-LWWCXvTrM", "playlist_index" => 3, "timestamp" => 1765956286, "title" => "(판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 85만원", "upload_date" => "20251217"} 01:26:31.442 [debug] QUERY OK source="sources" db=0.1ms idle=1328.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] 01:26:31.443 [debug] QUERY OK source="sources" db=0.1ms idle=1328.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:26:31.446 [debug] QUERY OK source="media_items" db=2.5ms idle=1329.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-17 07:24:46Z], 4] 01:26:31.447 [debug] QUERY OK source="media_items" db=0.7ms idle=1047.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 85만원", "c5b219a3-c581-47b6-9587-361e885c9e6c", "https://www.youtube.com/watch?v=h-LWWCXvTrM", "h-LWWCXvTrM", false, 105, false, 3, "/downloads/조은미싱/2025-12-17 (판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 85만원/(판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 85만원 [h-LWWCXvTrM].mkv", false, false, 4, [], 98, ~U[2025-12-17 07:24:46Z], ~U[2025-12-24 01:26:31Z], ~U[2025-12-24 01:26:31Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 85만원", "https://www.youtube.com/watch?v=h-LWWCXvTrM", "h-LWWCXvTrM", 105, false, "/downloads/조은미싱/2025-12-17 (판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 85만원/(판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 85만원 [h-LWWCXvTrM].mkv", false, 4, ~U[2025-12-17 07:24:46Z]] 01:26:31.447 [debug] QUERY OK source="sources" db=0.2ms idle=46.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] 01:26:31.448 [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] 01:26:31.448 [debug] QUERY OK source="media_items" db=0.2ms 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 [27517] 01:26:31.448 [debug] Current batch of media processed. Will check again in 1000ms 01:26:32.449 [debug] Current batch of media processed. Will check again in 1000ms 01:26:33.450 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "duration" => 144, "filename" => "/downloads/조은미싱/2025-12-15 HIKARI (히카리) H98S 왕가마 본봉사절미싱 중고 79만원/HIKARI (히카리) H98S 왕가마 본봉사절미싱 중고 79만원 [e_BQWqfRYGA].mkv", "id" => "e_BQWqfRYGA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=e_BQWqfRYGA", "playlist_index" => 4, "timestamp" => 1765785930, "title" => "HIKARI (히카리) H98S 왕가마 본봉사절미싱 중고 79만원", "upload_date" => "20251215"} 01:26:33.451 [debug] QUERY OK source="sources" db=0.2ms idle=336.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] 01:26:33.451 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=336.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:26:33.454 [debug] QUERY OK source="media_items" db=2.6ms idle=337.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-15 08:05:30Z], 4] 01:26:33.456 [debug] QUERY OK source="media_items" db=0.8ms idle=340.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "HIKARI (히카리) H98S 왕가마 본봉사절미싱 중고 79만원", "7d2a9c1a-effa-4e81-9050-7ed2f3736f31", "https://www.youtube.com/watch?v=e_BQWqfRYGA", "e_BQWqfRYGA", false, 144, false, 4, "/downloads/조은미싱/2025-12-15 HIKARI (히카리) H98S 왕가마 본봉사절미싱 중고 79만원/HIKARI (히카리) H98S 왕가마 본봉사절미싱 중고 79만원 [e_BQWqfRYGA].mkv", false, false, 4, [], 98, ~U[2025-12-15 08:05:30Z], ~U[2025-12-24 01:26:33Z], ~U[2025-12-24 01:26:33Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "HIKARI (히카리) H98S 왕가마 본봉사절미싱 중고 79만원", "https://www.youtube.com/watch?v=e_BQWqfRYGA", "e_BQWqfRYGA", 144, false, "/downloads/조은미싱/2025-12-15 HIKARI (히카리) H98S 왕가마 본봉사절미싱 중고 79만원/HIKARI (히카리) H98S 왕가마 본봉사절미싱 중고 79만원 [e_BQWqfRYGA].mkv", false, 4, ~U[2025-12-15 08:05:30Z]] 01:26:33.456 [debug] QUERY OK source="sources" db=0.2ms idle=50.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 01:26:33.457 [debug] QUERY OK source="media_profiles" db=0.2ms idle=5.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 01:26:33.457 [debug] QUERY OK source="media_items" db=0.3ms idle=5.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 [26965] 01:26:33.457 [debug] Current batch of media processed. Will check again in 1000ms 01:26:34.458 [debug] Current batch of media processed. Will check again in 1000ms 01:26:35.460 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "duration" => 92, "filename" => "/downloads/조은미싱/2025-12-12 트레저 BS-101 스쿠이 중고 95만원/트레저 BS-101 스쿠이 중고 95만원 [YpUHHCTOW6c].mkv", "id" => "YpUHHCTOW6c", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=YpUHHCTOW6c", "playlist_index" => 5, "timestamp" => 1765530426, "title" => "트레저 BS-101 스쿠이 중고 95만원", "upload_date" => "20251212"} 01:26:35.460 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=346.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:26:35.461 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=346.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] 01:26:35.464 [debug] QUERY OK source="media_items" db=2.6ms idle=346.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-12 09:07:06Z], 4] 01:26:35.465 [debug] QUERY OK source="media_items" db=0.7ms idle=349.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "트레저 BS-101 스쿠이 중고 95만원", "0c571730-6737-4736-a1c9-d73474300d25", "https://www.youtube.com/watch?v=YpUHHCTOW6c", "YpUHHCTOW6c", false, 92, false, 5, "/downloads/조은미싱/2025-12-12 트레저 BS-101 스쿠이 중고 95만원/트레저 BS-101 스쿠이 중고 95만원 [YpUHHCTOW6c].mkv", false, false, 4, [], 97, ~U[2025-12-12 09:07:06Z], ~U[2025-12-24 01:26:35Z], ~U[2025-12-24 01:26:35Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "트레저 BS-101 스쿠이 중고 95만원", "https://www.youtube.com/watch?v=YpUHHCTOW6c", "YpUHHCTOW6c", 92, false, "/downloads/조은미싱/2025-12-12 트레저 BS-101 스쿠이 중고 95만원/트레저 BS-101 스쿠이 중고 95만원 [YpUHHCTOW6c].mkv", false, 4, ~U[2025-12-12 09:07:06Z]] 01:26:35.465 [debug] QUERY OK source="sources" db=0.2ms idle=55.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] 01:26:35.466 [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] 01:26:35.466 [debug] QUERY OK source="media_items" db=0.2ms 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 [26132] 01:26:35.466 [info] Kicking off download for media item #26132 (YpUHHCTOW6c) 01:26:35.468 [debug] Current batch of media processed. Will check again in 1000ms 01:26:36.469 [debug] Current batch of media processed. Will check again in 1000ms 01:26:37.470 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "duration" => 143, "filename" => "/downloads/조은미싱/2025-12-12 썬스타 KM-640BL 수동 상하송 중고 85만원/썬스타 KM-640BL 수동 상하송 중고 85만원 [dyWLUB6VFtw].mkv", "id" => "dyWLUB6VFtw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=dyWLUB6VFtw", "playlist_index" => 6, "timestamp" => 1765529704, "title" => "썬스타 KM-640BL 수동 상하송 중고 85만원", "upload_date" => "20251212"} 01:26:37.471 [debug] QUERY OK source="sources" db=0.2ms idle=356.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] 01:26:37.472 [debug] QUERY OK source="sources" db=0.2ms idle=357.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:26:37.474 [debug] QUERY OK source="media_items" db=2.6ms idle=357.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-12 08:55:04Z], 4] 01:26:37.476 [debug] QUERY OK source="media_items" db=0.8ms idle=360.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "썬스타 KM-640BL 수동 상하송 중고 85만원", "d41e33d6-f0d6-430b-980b-d2c973fd76d0", "https://www.youtube.com/watch?v=dyWLUB6VFtw", "dyWLUB6VFtw", false, 143, false, 6, "/downloads/조은미싱/2025-12-12 썬스타 KM-640BL 수동 상하송 중고 85만원/썬스타 KM-640BL 수동 상하송 중고 85만원 [dyWLUB6VFtw].mkv", false, false, 4, [], 97, ~U[2025-12-12 08:55:04Z], ~U[2025-12-24 01:26:37Z], ~U[2025-12-24 01:26:37Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "썬스타 KM-640BL 수동 상하송 중고 85만원", "https://www.youtube.com/watch?v=dyWLUB6VFtw", "dyWLUB6VFtw", 143, false, "/downloads/조은미싱/2025-12-12 썬스타 KM-640BL 수동 상하송 중고 85만원/썬스타 KM-640BL 수동 상하송 중고 85만원 [dyWLUB6VFtw].mkv", false, 4, ~U[2025-12-12 08:55:04Z]] 01:26:37.476 [debug] QUERY OK source="sources" db=0.2ms idle=62.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 01:26:37.476 [debug] QUERY OK source="media_profiles" db=0.1ms idle=5.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 01:26:37.477 [debug] QUERY OK source="media_items" db=0.2ms 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 [26133] 01:26:37.477 [info] Kicking off download for media item #26133 (dyWLUB6VFtw) 01:26:37.479 [debug] Current batch of media processed. Will check again in 1000ms 01:26:38.480 [debug] Current batch of media processed. Will check again in 1000ms 01:26:39.481 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "duration" => 129, "filename" => "/downloads/조은미싱/2025-12-11 (판매완료) 시리우스 B8 본봉사절미싱 중고 81만원/(판매완료) 시리우스 B8 본봉사절미싱 중고 81만원 [07_Q0dvbUXU].mkv", "id" => "07_Q0dvbUXU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=07_Q0dvbUXU", "playlist_index" => 7, "timestamp" => 1765442946, "title" => "(판매완료) 시리우스 B8 본봉사절미싱 중고 81만원", "upload_date" => "20251211"} 01:26:39.482 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=367.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:26:39.482 [debug] QUERY OK source="sources" db=0.2ms idle=368.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] 01:26:39.485 [debug] QUERY OK source="media_items" db=2.5ms idle=368.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-11 08:49:06Z], 4] 01:26:39.488 [debug] QUERY OK source="media_items" db=2.1ms idle=371.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 시리우스 B8 본봉사절미싱 중고 81만원", "8d6c301b-9929-4b80-88f9-764ecd6ae6e9", "https://www.youtube.com/watch?v=07_Q0dvbUXU", "07_Q0dvbUXU", false, 129, false, 7, "/downloads/조은미싱/2025-12-11 (판매완료) 시리우스 B8 본봉사절미싱 중고 81만원/(판매완료) 시리우스 B8 본봉사절미싱 중고 81만원 [07_Q0dvbUXU].mkv", false, false, 4, [], 97, ~U[2025-12-11 08:49:06Z], ~U[2025-12-24 01:26:39Z], ~U[2025-12-24 01:26:39Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 시리우스 B8 본봉사절미싱 중고 81만원", "https://www.youtube.com/watch?v=07_Q0dvbUXU", "07_Q0dvbUXU", 129, false, "/downloads/조은미싱/2025-12-11 (판매완료) 시리우스 B8 본봉사절미싱 중고 81만원/(판매완료) 시리우스 B8 본봉사절미싱 중고 81만원 [07_Q0dvbUXU].mkv", false, 4, ~U[2025-12-11 08:49:06Z]] 01:26:39.488 [debug] QUERY OK source="sources" db=0.2ms idle=69.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 01:26:39.489 [debug] QUERY OK source="media_profiles" db=0.1ms idle=6.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 01:26:39.489 [debug] QUERY OK source="media_items" db=0.2ms idle=6.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 [25850] 01:26:39.489 [debug] Current batch of media processed. Will check again in 1000ms 01:26:40.490 [debug] Current batch of media processed. Will check again in 1000ms 01:26:41.491 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "duration" => 81, "filename" => "/downloads/조은미싱/2025-12-11 (판매완료) 골든휠 CS-747 피할기 중고 60만원 (대만제)/(판매완료) 골든휠 CS-747 피할기 중고 60만원 (대만제) [oS2N43NfvJw].mkv", "id" => "oS2N43NfvJw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=oS2N43NfvJw", "playlist_index" => 8, "timestamp" => 1765421051, "title" => "(판매완료) 골든휠 CS-747 피할기 중고 60만원 (대만제)", "upload_date" => "20251211"} 01:26:41.492 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=377.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] 01:26:41.493 [debug] QUERY OK source="sources" db=0.2ms idle=378.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:26:41.496 [debug] QUERY OK source="media_items" db=2.6ms idle=378.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-11 02:44:11Z], 4] 01:26:41.497 [debug] QUERY OK source="media_items" db=0.7ms idle=381.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 골든휠 CS-747 피할기 중고 60만원 (대만제)", "dac9a20a-a8cd-4a2b-ac62-ae0364955d7a", "https://www.youtube.com/watch?v=oS2N43NfvJw", "oS2N43NfvJw", false, 81, false, 8, "/downloads/조은미싱/2025-12-11 (판매완료) 골든휠 CS-747 피할기 중고 60만원 (대만제)/(판매완료) 골든휠 CS-747 피할기 중고 60만원 (대만제) [oS2N43NfvJw].mkv", false, false, 4, [], 97, ~U[2025-12-11 02:44:11Z], ~U[2025-12-24 01:26:41Z], ~U[2025-12-24 01:26:41Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 골든휠 CS-747 피할기 중고 60만원 (대만제)", "https://www.youtube.com/watch?v=oS2N43NfvJw", "oS2N43NfvJw", 81, false, "/downloads/조은미싱/2025-12-11 (판매완료) 골든휠 CS-747 피할기 중고 60만원 (대만제)/(판매완료) 골든휠 CS-747 피할기 중고 60만원 (대만제) [oS2N43NfvJw].mkv", false, 4, ~U[2025-12-11 02:44:11Z]] 01:26:41.497 [debug] QUERY OK source="sources" db=0.2ms idle=74.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] 01:26:41.498 [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] 01:26:41.498 [debug] QUERY OK source="media_items" db=0.2ms 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 [25851] 01:26:41.498 [info] Kicking off download for media item #25851 (oS2N43NfvJw) 01:26:41.500 [debug] Current batch of media processed. Will check again in 1000ms 01:26:42.500 [debug] Current batch of media processed. Will check again in 1000ms 01:26:43.502 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "duration" => 299, "filename" => "/downloads/조은미싱/2025-12-10 JAPSEW J-27 멜로스티치 기초 사용 안내/JAPSEW J-27 멜로스티치 기초 사용 안내 [NZYINPJag2I].mkv", "id" => "NZYINPJag2I", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=NZYINPJag2I", "playlist_index" => 9, "timestamp" => 1765356144, "title" => "JAPSEW J-27 멜로스티치 기초 사용 안내", "upload_date" => "20251210"} 01:26:43.502 [debug] QUERY OK source="sources" db=0.2ms queue=0.2ms idle=388.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:26:43.503 [debug] QUERY OK source="sources" db=0.1ms idle=388.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:26:43.506 [debug] QUERY OK source="media_items" db=2.8ms idle=389.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-10 08:42:24Z], 4] 01:26:43.607 [debug] QUERY OK source="media_items" db=100.4ms idle=392.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "JAPSEW J-27 멜로스티치 기초 사용 안내", "564a7897-0ada-4b1b-8df8-67e4916a5f91", "https://www.youtube.com/watch?v=NZYINPJag2I", "NZYINPJag2I", false, 299, false, 9, "/downloads/조은미싱/2025-12-10 JAPSEW J-27 멜로스티치 기초 사용 안내/JAPSEW J-27 멜로스티치 기초 사용 안내 [NZYINPJag2I].mkv", false, false, 4, [], 97, ~U[2025-12-10 08:42:24Z], ~U[2025-12-24 01:26:43Z], ~U[2025-12-24 01:26:43Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "JAPSEW J-27 멜로스티치 기초 사용 안내", "https://www.youtube.com/watch?v=NZYINPJag2I", "NZYINPJag2I", 299, false, "/downloads/조은미싱/2025-12-10 JAPSEW J-27 멜로스티치 기초 사용 안내/JAPSEW J-27 멜로스티치 기초 사용 안내 [NZYINPJag2I].mkv", false, 4, ~U[2025-12-10 08:42:24Z]] 01:26:43.608 [debug] QUERY OK source="sources" db=0.4ms idle=180.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 01:26:43.608 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=105.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] 01:26:43.609 [debug] QUERY OK source="media_items" db=0.4ms idle=105.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 [25572] 01:26:43.610 [debug] Current batch of media processed. Will check again in 1000ms 01:26:44.610 [debug] Current batch of media processed. Will check again in 1000ms 01:26:45.611 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "duration" => 190, "filename" => "/downloads/조은미싱/2025-12-10 하이리드 (HIGHLEAD) GC0618-1 총합송 기초 사용 안내/하이리드 (HIGHLEAD) GC0618-1 총합송 기초 사용 안내 [o_xotBT77rE].mkv", "id" => "o_xotBT77rE", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=o_xotBT77rE", "playlist_index" => 10, "timestamp" => 1765353618, "title" => "하이리드 (HIGHLEAD) GC0618-1 총합송 기초 사용 안내", "upload_date" => "20251210"} 01:26:45.612 [debug] QUERY OK source="sources" db=0.2ms idle=497.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] 01:26:45.612 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=497.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:26:45.615 [debug] QUERY OK source="media_items" db=2.6ms idle=498.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-10 08:00:18Z], 4] 01:26:45.646 [debug] QUERY OK source="media_items" db=30.4ms idle=501.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "하이리드 (HIGHLEAD) GC0618-1 총합송 기초 사용 안내", "6d08720f-2c28-402a-9488-a39078758927", "https://www.youtube.com/watch?v=o_xotBT77rE", "o_xotBT77rE", false, 190, false, 10, "/downloads/조은미싱/2025-12-10 하이리드 (HIGHLEAD) GC0618-1 총합송 기초 사용 안내/하이리드 (HIGHLEAD) GC0618-1 총합송 기초 사용 안내 [o_xotBT77rE].mkv", false, false, 4, [], 97, ~U[2025-12-10 08:00:18Z], ~U[2025-12-24 01:26:45Z], ~U[2025-12-24 01:26:45Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "하이리드 (HIGHLEAD) GC0618-1 총합송 기초 사용 안내", "https://www.youtube.com/watch?v=o_xotBT77rE", "o_xotBT77rE", 190, false, "/downloads/조은미싱/2025-12-10 하이리드 (HIGHLEAD) GC0618-1 총합송 기초 사용 안내/하이리드 (HIGHLEAD) GC0618-1 총합송 기초 사용 안내 [o_xotBT77rE].mkv", false, 4, ~U[2025-12-10 08:00:18Z]] 01:26:45.647 [debug] QUERY OK source="sources" db=0.1ms idle=215.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 01:26:45.647 [debug] QUERY OK source="media_profiles" db=0.1ms idle=35.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] 01:26:45.647 [debug] QUERY OK source="media_items" db=0.1ms idle=35.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 [25573] 01:26:45.648 [debug] Current batch of media processed. Will check again in 1000ms 01:26:46.648 [debug] Current batch of media processed. Will check again in 1000ms 01:26:47.649 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "duration" => 110, "filename" => "/downloads/조은미싱/2025-12-08 (판매완료) 썬스타 KM-235A 본봉사절미싱 중고 42만원/(판매완료) 썬스타 KM-235A 본봉사절미싱 중고 42만원 [ckiSECdMGOs].mkv", "id" => "ckiSECdMGOs", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=ckiSECdMGOs", "playlist_index" => 11, "timestamp" => 1765186346, "title" => "(판매완료) 썬스타 KM-235A 본봉사절미싱 중고 42만원", "upload_date" => "20251208"} 01:26:47.650 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=535.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:26:47.651 [debug] QUERY OK source="sources" db=0.1ms idle=536.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] 01:26:47.653 [debug] QUERY OK source="media_items" db=2.4ms idle=536.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-08 09:32:26Z], 4] 01:26:47.655 [debug] QUERY OK source="media_items" db=0.7ms idle=539.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 썬스타 KM-235A 본봉사절미싱 중고 42만원", "8879efc6-ed21-4832-8dc5-2fe26ceacc94", "https://www.youtube.com/watch?v=ckiSECdMGOs", "ckiSECdMGOs", false, 110, false, 11, "/downloads/조은미싱/2025-12-08 (판매완료) 썬스타 KM-235A 본봉사절미싱 중고 42만원/(판매완료) 썬스타 KM-235A 본봉사절미싱 중고 42만원 [ckiSECdMGOs].mkv", false, false, 4, [], 98, ~U[2025-12-08 09:32:26Z], ~U[2025-12-24 01:26:47Z], ~U[2025-12-24 01:26:47Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 썬스타 KM-235A 본봉사절미싱 중고 42만원", "https://www.youtube.com/watch?v=ckiSECdMGOs", "ckiSECdMGOs", 110, false, "/downloads/조은미싱/2025-12-08 (판매완료) 썬스타 KM-235A 본봉사절미싱 중고 42만원/(판매완료) 썬스타 KM-235A 본봉사절미싱 중고 42만원 [ckiSECdMGOs].mkv", false, 4, ~U[2025-12-08 09:32:26Z]] 01:26:47.655 [debug] QUERY OK source="sources" db=0.2ms idle=220.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 01:26:47.655 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 01:26:47.656 [debug] QUERY OK source="media_items" db=0.2ms 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 [25020] 01:26:47.656 [debug] Current batch of media processed. Will check again in 1000ms 01:26:48.657 [debug] Current batch of media processed. Will check again in 1000ms 01:26:49.658 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "duration" => 247, "filename" => "/downloads/조은미싱/2025-12-02 시리우스 오버록 차동 조절 부품 탈착 방법/시리우스 오버록 차동 조절 부품 탈착 방법 [QNvEznvHQ98].mkv", "id" => "QNvEznvHQ98", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=QNvEznvHQ98", "playlist_index" => 12, "timestamp" => 1764667095, "title" => "시리우스 오버록 차동 조절 부품 탈착 방법", "upload_date" => "20251202"} 01:26:49.659 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=544.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 01:26:49.660 [debug] QUERY OK source="sources" db=0.2ms idle=545.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:26:49.662 [debug] QUERY OK source="media_items" db=2.6ms idle=545.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-02 09:18:15Z], 4] 01:26:49.664 [debug] QUERY OK source="media_items" db=0.8ms idle=548.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "시리우스 오버록 차동 조절 부품 탈착 방법", "b5416a76-efde-4382-bbb4-32c2d3688815", "https://www.youtube.com/watch?v=QNvEznvHQ98", "QNvEznvHQ98", false, 247, false, 12, "/downloads/조은미싱/2025-12-02 시리우스 오버록 차동 조절 부품 탈착 방법/시리우스 오버록 차동 조절 부품 탈착 방법 [QNvEznvHQ98].mkv", false, false, 4, [], 97, ~U[2025-12-02 09:18:15Z], ~U[2025-12-24 01:26:49Z], ~U[2025-12-24 01:26:49Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "시리우스 오버록 차동 조절 부품 탈착 방법", "https://www.youtube.com/watch?v=QNvEznvHQ98", "QNvEznvHQ98", 247, false, "/downloads/조은미싱/2025-12-02 시리우스 오버록 차동 조절 부품 탈착 방법/시리우스 오버록 차동 조절 부품 탈착 방법 [QNvEznvHQ98].mkv", false, 4, ~U[2025-12-02 09:18:15Z]] 01:26:49.664 [debug] QUERY OK source="sources" db=0.1ms idle=224.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 01:26:49.665 [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] 01:26:49.665 [debug] QUERY OK source="media_items" db=0.3ms 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 [22780] 01:26:49.665 [info] Kicking off download for media item #22780 (QNvEznvHQ98) 01:26:49.667 [debug] Current batch of media processed. Will check again in 1000ms 01:26:49.983 [info] {"source":"oban","duration":1472,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:26:50.668 [debug] Current batch of media processed. Will check again in 1000ms 01:26:51.670 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "duration" => 98, "filename" => "/downloads/조은미싱/2025-12-02 본봉미싱 발판 연결대 (쓰리보) 교환 방법/본봉미싱 발판 연결대 (쓰리보) 교환 방법 [et6aY7oIJSk].mkv", "id" => "et6aY7oIJSk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=et6aY7oIJSk", "playlist_index" => 13, "timestamp" => 1764654733, "title" => "본봉미싱 발판 연결대 (쓰리보) 교환 방법", "upload_date" => "20251202"} 01:26:51.671 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=556.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:26:51.671 [debug] QUERY OK source="sources" db=0.2ms idle=556.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:26:51.674 [debug] QUERY OK source="media_items" db=2.7ms idle=557.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-02 05:52:13Z], 4] 01:26:51.675 [debug] QUERY OK source="media_items" db=0.8ms idle=560.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "본봉미싱 발판 연결대 (쓰리보) 교환 방법", "5205cb88-b034-4e02-aaf7-ab6a2ac0db7a", "https://www.youtube.com/watch?v=et6aY7oIJSk", "et6aY7oIJSk", false, 98, false, 13, "/downloads/조은미싱/2025-12-02 본봉미싱 발판 연결대 (쓰리보) 교환 방법/본봉미싱 발판 연결대 (쓰리보) 교환 방법 [et6aY7oIJSk].mkv", false, false, 4, [], 97, ~U[2025-12-02 05:52:13Z], ~U[2025-12-24 01:26:51Z], ~U[2025-12-24 01:26:51Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "본봉미싱 발판 연결대 (쓰리보) 교환 방법", "https://www.youtube.com/watch?v=et6aY7oIJSk", "et6aY7oIJSk", 98, false, "/downloads/조은미싱/2025-12-02 본봉미싱 발판 연결대 (쓰리보) 교환 방법/본봉미싱 발판 연결대 (쓰리보) 교환 방법 [et6aY7oIJSk].mkv", false, 4, ~U[2025-12-02 05:52:13Z]] 01:26:51.676 [debug] QUERY OK source="sources" db=0.2ms idle=231.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 01:26:51.676 [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] 01:26:51.677 [debug] QUERY OK source="media_items" db=0.2ms 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 [22781] 01:26:51.677 [debug] Current batch of media processed. Will check again in 1000ms 01:26:52.678 [debug] Current batch of media processed. Will check again in 1000ms 01:26:53.680 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "duration" => 79, "filename" => "/downloads/조은미싱/2025-12-01 야마토 VC1700-156M-8F 사절삼봉 중고 160만원 (※ 컴프레서 별매)/야마토 VC1700-156M-8F 사절삼봉 중고 160만원 (※ 컴프레서 별매) [62VTNIHDPOM].mkv", "id" => "62VTNIHDPOM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=62VTNIHDPOM", "playlist_index" => 14, "timestamp" => 1764580528, "title" => "야마토 VC1700-156M-8F 사절삼봉 중고 160만원 (※ 컴프레서 별매)", "upload_date" => "20251201"} 01:26:53.680 [debug] QUERY OK source="sources" db=0.2ms idle=566.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:26:53.681 [debug] QUERY OK source="sources" db=0.1ms idle=566.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] 01:26:53.684 [debug] QUERY OK source="media_items" db=2.6ms idle=566.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-01 09:15:28Z], 4] 01:26:53.685 [debug] QUERY OK source="media_items" db=0.7ms idle=569.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "야마토 VC1700-156M-8F 사절삼봉 중고 160만원 (※ 컴프레서 별매)", "780bad0b-be86-4e2c-a324-9030024c14e1", "https://www.youtube.com/watch?v=62VTNIHDPOM", "62VTNIHDPOM", false, 79, false, 14, "/downloads/조은미싱/2025-12-01 야마토 VC1700-156M-8F 사절삼봉 중고 160만원 (※ 컴프레서 별매)/야마토 VC1700-156M-8F 사절삼봉 중고 160만원 (※ 컴프레서 별매) [62VTNIHDPOM].mkv", false, false, 4, [], 98, ~U[2025-12-01 09:15:28Z], ~U[2025-12-24 01:26:53Z], ~U[2025-12-24 01:26:53Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "야마토 VC1700-156M-8F 사절삼봉 중고 160만원 (※ 컴프레서 별매)", "https://www.youtube.com/watch?v=62VTNIHDPOM", "62VTNIHDPOM", 79, false, "/downloads/조은미싱/2025-12-01 야마토 VC1700-156M-8F 사절삼봉 중고 160만원 (※ 컴프레서 별매)/야마토 VC1700-156M-8F 사절삼봉 중고 160만원 (※ 컴프레서 별매) [62VTNIHDPOM].mkv", false, 4, ~U[2025-12-01 09:15:28Z]] 01:26:53.685 [debug] QUERY OK source="sources" db=0.1ms idle=237.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 01:26:53.686 [debug] QUERY OK source="media_profiles" db=0.2ms 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] 01:26:53.686 [debug] QUERY OK source="media_items" db=0.2ms 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 [22589] 01:26:53.686 [info] Kicking off download for media item #22589 (62VTNIHDPOM) 01:26:53.688 [debug] Current batch of media processed. Will check again in 1000ms 01:26:54.689 [debug] Current batch of media processed. Will check again in 1000ms 01:26:55.690 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "duration" => 169, "filename" => "/downloads/조은미싱/2025-11-26 (판매완료) 페가수스 EX5214 오버록 (일제) 중고 100만원/(판매완료) 페가수스 EX5214 오버록 (일제) 중고 100만원 [r7TdDjX7Xn4].mkv", "id" => "r7TdDjX7Xn4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=r7TdDjX7Xn4", "playlist_index" => 15, "timestamp" => 1764151386, "title" => "(판매완료) 페가수스 EX5214 오버록 (일제) 중고 100만원", "upload_date" => "20251126"} 01:26:55.691 [debug] QUERY OK source="sources" db=0.3ms queue=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" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 01:26:55.692 [debug] QUERY OK source="sources" db=0.2ms idle=577.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:26:55.695 [debug] QUERY OK source="media_items" db=2.5ms idle=578.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-26 10:03:06Z], 4] 01:26:55.696 [debug] QUERY OK source="media_items" db=1.0ms idle=581.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 페가수스 EX5214 오버록 (일제) 중고 100만원", "848918d2-18ec-46de-aff8-444198333aef", "https://www.youtube.com/watch?v=r7TdDjX7Xn4", "r7TdDjX7Xn4", false, 169, false, 15, "/downloads/조은미싱/2025-11-26 (판매완료) 페가수스 EX5214 오버록 (일제) 중고 100만원/(판매완료) 페가수스 EX5214 오버록 (일제) 중고 100만원 [r7TdDjX7Xn4].mkv", false, false, 4, [], 98, ~U[2025-11-26 10:03:06Z], ~U[2025-12-24 01:26:55Z], ~U[2025-12-24 01:26:55Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 페가수스 EX5214 오버록 (일제) 중고 100만원", "https://www.youtube.com/watch?v=r7TdDjX7Xn4", "r7TdDjX7Xn4", 169, false, "/downloads/조은미싱/2025-11-26 (판매완료) 페가수스 EX5214 오버록 (일제) 중고 100만원/(판매완료) 페가수스 EX5214 오버록 (일제) 중고 100만원 [r7TdDjX7Xn4].mkv", false, 4, ~U[2025-11-26 10:03:06Z]] 01:26:55.697 [debug] QUERY OK source="sources" db=0.1ms idle=244.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 01:26:55.697 [debug] QUERY OK source="media_profiles" db=0.1ms idle=5.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 01:26:55.698 [debug] QUERY OK source="media_items" db=0.2ms idle=5.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 [21651] 01:26:55.698 [debug] Current batch of media processed. Will check again in 1000ms 01:26:56.699 [debug] Current batch of media processed. Will check again in 1000ms 01:26:57.701 [debug] Current batch of media processed. Will check again in 1000ms 01:26:58.702 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "duration" => 53, "filename" => "/downloads/조은미싱/2025-11-25 (판매완료) 니피 (NIPPY) NP~1 피할기 중고 130만원/(판매완료) 니피 (NIPPY) NP~1 피할기 중고 130만원 [S70ajRIMZLU].mkv", "id" => "S70ajRIMZLU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=S70ajRIMZLU", "playlist_index" => 16, "timestamp" => 1764061445, "title" => "(판매완료) 니피 (NIPPY) NP~1 피할기 중고 130만원", "upload_date" => "20251125"} 01:26:58.703 [debug] QUERY OK source="sources" db=0.2ms idle=1588.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] 01:26:58.704 [debug] QUERY OK source="sources" db=0.4ms idle=1589.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:26:58.707 [debug] QUERY OK source="media_items" db=2.6ms idle=1589.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-25 09:04:05Z], 4] 01:26:58.708 [debug] QUERY OK source="media_items" db=0.8ms idle=1250.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 니피 (NIPPY) NP~1 피할기 중고 130만원", "22326637-b520-41bd-ad14-c7d4f636c143", "https://www.youtube.com/watch?v=S70ajRIMZLU", "S70ajRIMZLU", false, 53, false, 16, "/downloads/조은미싱/2025-11-25 (판매완료) 니피 (NIPPY) NP~1 피할기 중고 130만원/(판매완료) 니피 (NIPPY) NP~1 피할기 중고 130만원 [S70ajRIMZLU].mkv", false, false, 4, [], 98, ~U[2025-11-25 09:04:05Z], ~U[2025-12-24 01:26:58Z], ~U[2025-12-24 01:26:58Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 니피 (NIPPY) NP~1 피할기 중고 130만원", "https://www.youtube.com/watch?v=S70ajRIMZLU", "S70ajRIMZLU", 53, false, "/downloads/조은미싱/2025-11-25 (판매완료) 니피 (NIPPY) NP~1 피할기 중고 130만원/(판매완료) 니피 (NIPPY) NP~1 피할기 중고 130만원 [S70ajRIMZLU].mkv", false, 4, ~U[2025-11-25 09:04:05Z]] 01:26:58.708 [debug] QUERY OK source="sources" db=0.2ms idle=249.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] 01:26:58.709 [debug] QUERY OK source="media_profiles" db=0.2ms idle=5.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 01:26:58.709 [debug] QUERY OK source="media_items" db=0.2ms 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 [21462] 01:26:58.709 [debug] Current batch of media processed. Will check again in 1000ms 01:26:59.710 [debug] Current batch of media processed. Will check again in 1000ms 01:27:00.128 [info] {"source":"oban","duration":423,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:27:00.712 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "duration" => 65, "filename" => "/downloads/조은미싱/2025-11-22 오버록 옵션 중 돈값 하는 기능! 흡입기 사절 장치 파헤치기/오버록 옵션 중 돈값 하는 기능! 흡입기 사절 장치 파헤치기 [GW-D_jyqQyQ].mkv", "id" => "GW-D_jyqQyQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=GW-D_jyqQyQ", "playlist_index" => 17, "timestamp" => 1763795833, "title" => "오버록 옵션 중 돈값 하는 기능! 흡입기 사절 장치 파헤치기", "upload_date" => "20251122"} 01:27:00.712 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=598.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:27:00.713 [debug] QUERY OK source="sources" db=0.1ms idle=598.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:27:00.716 [debug] QUERY OK source="media_items" db=2.6ms idle=599.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-22 07:17:13Z], 4] 01:27:00.717 [debug] QUERY OK source="media_items" db=0.9ms idle=587.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "오버록 옵션 중 돈값 하는 기능! 흡입기 사절 장치 파헤치기", "c01dffb3-53fe-4dcf-a79a-96e4795b02b8", "https://www.youtube.com/watch?v=GW-D_jyqQyQ", "GW-D_jyqQyQ", false, 65, false, 17, "/downloads/조은미싱/2025-11-22 오버록 옵션 중 돈값 하는 기능! 흡입기 사절 장치 파헤치기/오버록 옵션 중 돈값 하는 기능! 흡입기 사절 장치 파헤치기 [GW-D_jyqQyQ].mkv", false, false, 4, [], 96, ~U[2025-11-22 07:17:13Z], ~U[2025-12-24 01:27:00Z], ~U[2025-12-24 01:27:00Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "오버록 옵션 중 돈값 하는 기능! 흡입기 사절 장치 파헤치기", "https://www.youtube.com/watch?v=GW-D_jyqQyQ", "GW-D_jyqQyQ", 65, false, "/downloads/조은미싱/2025-11-22 오버록 옵션 중 돈값 하는 기능! 흡입기 사절 장치 파헤치기/오버록 옵션 중 돈값 하는 기능! 흡입기 사절 장치 파헤치기 [GW-D_jyqQyQ].mkv", false, 4, ~U[2025-11-22 07:17:13Z]] 01:27:00.717 [debug] QUERY OK source="sources" db=0.2ms idle=254.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] 01:27:00.718 [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] 01:27:00.718 [debug] QUERY OK source="media_items" db=0.2ms 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 [20897] 01:27:00.718 [debug] Current batch of media processed. Will check again in 1000ms 01:27:01.719 [debug] Current batch of media processed. Will check again in 1000ms 01:27:02.720 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "duration" => 123, "filename" => "/downloads/조은미싱/2025-11-22 (판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 72만원/(판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 72만원 [_c9ExwmEz6M].mkv", "id" => "_c9ExwmEz6M", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=_c9ExwmEz6M", "playlist_index" => 18, "timestamp" => 1763794866, "title" => "(판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 72만원", "upload_date" => "20251122"} 01:27:02.721 [debug] QUERY OK source="sources" db=0.2ms idle=606.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] 01:27:02.722 [debug] QUERY OK source="sources" db=0.3ms idle=607.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:27:02.725 [debug] QUERY OK source="media_items" db=2.9ms idle=607.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-22 07:01:06Z], 4] 01:27:02.726 [debug] QUERY OK source="media_items" db=0.8ms idle=610.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 72만원", "da57f52f-c35f-4ce4-a5f0-a82382d110ee", "https://www.youtube.com/watch?v=_c9ExwmEz6M", "_c9ExwmEz6M", false, 123, false, 18, "/downloads/조은미싱/2025-11-22 (판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 72만원/(판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 72만원 [_c9ExwmEz6M].mkv", false, false, 4, [], 96, ~U[2025-11-22 07:01:06Z], ~U[2025-12-24 01:27:02Z], ~U[2025-12-24 01:27:02Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 72만원", "https://www.youtube.com/watch?v=_c9ExwmEz6M", "_c9ExwmEz6M", 123, false, "/downloads/조은미싱/2025-11-22 (판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 72만원/(판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 72만원 [_c9ExwmEz6M].mkv", false, 4, ~U[2025-11-22 07:01:06Z]] 01:27:02.726 [debug] QUERY OK source="sources" db=0.2ms idle=258.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 01:27:02.727 [debug] QUERY OK source="media_profiles" db=0.2ms idle=5.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 01:27:02.728 [debug] QUERY OK source="media_items" db=0.2ms idle=5.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 [20898] 01:27:02.728 [debug] Current batch of media processed. Will check again in 1000ms 01:27:03.729 [debug] Current batch of media processed. Will check again in 1000ms 01:27:04.731 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "duration" => 178, "filename" => "/downloads/조은미싱/2025-11-22 (판매완료) 시리우스 SR5200-4D 오버록 중고 94만원 (흡입기사절장치 포함)/(판매완료) 시리우스 SR5200-4D 오버록 중고 94만원 (흡입기사절장치 포함) [4pKPduSU7lo].mkv", "id" => "4pKPduSU7lo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=4pKPduSU7lo", "playlist_index" => 19, "timestamp" => 1763793157, "title" => "(판매완료) 시리우스 SR5200-4D 오버록 중고 94만원 (흡입기사절장치 포함)", "upload_date" => "20251122"} 01:27:04.732 [debug] QUERY OK source="sources" db=0.2ms idle=617.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] 01:27:04.732 [debug] QUERY OK source="sources" db=0.2ms idle=617.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:27:04.735 [debug] QUERY OK source="media_items" db=2.7ms idle=618.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-22 06:32:37Z], 4] 01:27:04.736 [debug] QUERY OK source="media_items" db=0.9ms idle=621.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 시리우스 SR5200-4D 오버록 중고 94만원 (흡입기사절장치 포함)", "ce6c1cea-38a1-471f-bc4c-399648a99469", "https://www.youtube.com/watch?v=4pKPduSU7lo", "4pKPduSU7lo", false, 178, false, 19, "/downloads/조은미싱/2025-11-22 (판매완료) 시리우스 SR5200-4D 오버록 중고 94만원 (흡입기사절장치 포함)/(판매완료) 시리우스 SR5200-4D 오버록 중고 94만원 (흡입기사절장치 포함) [4pKPduSU7lo].mkv", false, false, 4, [], 96, ~U[2025-11-22 06:32:37Z], ~U[2025-12-24 01:27:04Z], ~U[2025-12-24 01:27:04Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 시리우스 SR5200-4D 오버록 중고 94만원 (흡입기사절장치 포함)", "https://www.youtube.com/watch?v=4pKPduSU7lo", "4pKPduSU7lo", 178, false, "/downloads/조은미싱/2025-11-22 (판매완료) 시리우스 SR5200-4D 오버록 중고 94만원 (흡입기사절장치 포함)/(판매완료) 시리우스 SR5200-4D 오버록 중고 94만원 (흡입기사절장치 포함) [4pKPduSU7lo].mkv", false, 4, ~U[2025-11-22 06:32:37Z]] 01:27:04.737 [debug] QUERY OK source="sources" db=0.1ms idle=264.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 01:27:04.737 [debug] QUERY OK source="media_profiles" db=0.1ms idle=5.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 01:27:04.738 [debug] QUERY OK source="media_items" db=0.2ms 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 [20899] 01:27:04.738 [debug] Current batch of media processed. Will check again in 1000ms 01:27:05.739 [debug] Current batch of media processed. Will check again in 1000ms 01:27:06.740 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "duration" => 129, "filename" => "/downloads/조은미싱/2025-11-17 (판매완료) 시리우스 B8 본봉사절미싱 중고 74만원/(판매완료) 시리우스 B8 본봉사절미싱 중고 74만원 [AlDM6ZGKD6o].mkv", "id" => "AlDM6ZGKD6o", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=AlDM6ZGKD6o", "playlist_index" => 20, "timestamp" => 1763375268, "title" => "(판매완료) 시리우스 B8 본봉사절미싱 중고 74만원", "upload_date" => "20251117"} 01:27:06.741 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=626.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:27:06.741 [debug] QUERY OK source="sources" db=0.1ms idle=627.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:27:06.745 [debug] QUERY OK source="media_items" db=2.9ms idle=627.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-17 10:27:48Z], 4] 01:27:06.746 [debug] QUERY OK source="media_items" db=0.8ms idle=630.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 시리우스 B8 본봉사절미싱 중고 74만원", "5124fba2-ef13-4da1-b30b-61b60a7dfa68", "https://www.youtube.com/watch?v=AlDM6ZGKD6o", "AlDM6ZGKD6o", false, 129, false, 20, "/downloads/조은미싱/2025-11-17 (판매완료) 시리우스 B8 본봉사절미싱 중고 74만원/(판매완료) 시리우스 B8 본봉사절미싱 중고 74만원 [AlDM6ZGKD6o].mkv", false, false, 4, [], 97, ~U[2025-11-17 10:27:48Z], ~U[2025-12-24 01:27:06Z], ~U[2025-12-24 01:27:06Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 시리우스 B8 본봉사절미싱 중고 74만원", "https://www.youtube.com/watch?v=AlDM6ZGKD6o", "AlDM6ZGKD6o", 129, false, "/downloads/조은미싱/2025-11-17 (판매완료) 시리우스 B8 본봉사절미싱 중고 74만원/(판매완료) 시리우스 B8 본봉사절미싱 중고 74만원 [AlDM6ZGKD6o].mkv", false, 4, ~U[2025-11-17 10:27:48Z]] 01:27:06.746 [debug] QUERY OK source="sources" db=0.1ms idle=270.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] 01:27:06.747 [debug] QUERY OK source="media_profiles" db=0.1ms idle=5.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 01:27:06.747 [debug] QUERY OK source="media_items" db=0.3ms idle=5.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 [19959] 01:27:06.748 [debug] Current batch of media processed. Will check again in 1000ms 01:27:06.771 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@%EC%A1%B0%EC%9D%80%EB%AF%B8%EC%8B%B1 --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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/f3/25/f3252b08e203c9e80accd3514c9241b8673f01b7a2b649748fe43c147198d021.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/5b/65/5b653e0b496630159c59a5f937328bbbcac4d7b42effe0cea5dfa3c81e84929b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 101 with: 01:27:06.773 [debug] Gracefully stopping file follower 01:27:06.774 [debug] QUERY OK source="sources" db=1.1ms queue=0.1ms 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" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [4] 01:27:06.775 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=28.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:27:06.778 [debug] QUERY OK source="media_items" db=3.1ms idle=28.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-22 08:36:18Z], 4] 01:27:06.785 [debug] QUERY OK source="media_items" db=4.9ms queue=0.1ms idle=32.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 주키 DDL-8000C 본봉사절미싱 전시중고 139만원", "90ca67f2-dc8f-4c4e-9f46-d9005ad3592a", "https://www.youtube.com/watch?v=OMj_7N008C4", "OMj_7N008C4", false, 67, false, 1, "/downloads/조은미싱/2025-12-22 (판매완료) 주키 DDL-8000C 본봉사절미싱 전시중고 139만원/(판매완료) 주키 DDL-8000C 본봉사절미싱 전시중고 139만원 [OMj_7N008C4].mkv", false, false, 4, [], 98, ~U[2025-12-22 08:36:18Z], ~U[2025-12-24 01:27:06Z], ~U[2025-12-24 01:27:06Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 주키 DDL-8000C 본봉사절미싱 전시중고 139만원", "https://www.youtube.com/watch?v=OMj_7N008C4", "OMj_7N008C4", 67, false, "/downloads/조은미싱/2025-12-22 (판매완료) 주키 DDL-8000C 본봉사절미싱 전시중고 139만원/(판매완료) 주키 DDL-8000C 본봉사절미싱 전시중고 139만원 [OMj_7N008C4].mkv", false, 4, ~U[2025-12-22 08:36:18Z]] 01:27:06.786 [debug] QUERY OK source="sources" db=0.6ms queue=0.3ms idle=37.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:27:06.790 [debug] QUERY OK source="media_items" db=3.9ms queue=0.2ms idle=12.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-19 10:00:31Z], 4] 01:27:06.797 [debug] QUERY OK source="media_items" db=2.7ms idle=19.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "부라더 ZM-8500-001 지그재그 중고 (일제) 120만원", "9c14caf0-ff3d-4da7-9b6c-5599e6f2342c", "https://www.youtube.com/watch?v=8_zxmaa0Ymw", "8_zxmaa0Ymw", false, 71, false, 2, "/downloads/조은미싱/2025-12-19 부라더 ZM-8500-001 지그재그 중고 (일제) 120만원/부라더 ZM-8500-001 지그재그 중고 (일제) 120만원 [8_zxmaa0Ymw].mkv", false, false, 4, [], 98, ~U[2025-12-19 10:00:31Z], ~U[2025-12-24 01:27:06Z], ~U[2025-12-24 01:27:06Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "부라더 ZM-8500-001 지그재그 중고 (일제) 120만원", "https://www.youtube.com/watch?v=8_zxmaa0Ymw", "8_zxmaa0Ymw", 71, false, "/downloads/조은미싱/2025-12-19 부라더 ZM-8500-001 지그재그 중고 (일제) 120만원/부라더 ZM-8500-001 지그재그 중고 (일제) 120만원 [8_zxmaa0Ymw].mkv", false, 4, ~U[2025-12-19 10:00:31Z]] 01:27:06.801 [debug] QUERY OK source="sources" db=1.2ms queue=1.7ms idle=19.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:27:06.804 [debug] QUERY OK source="media_items" db=3.2ms queue=0.1ms idle=17.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-17 07:24:46Z], 4] 01:27:06.810 [debug] QUERY OK source="media_items" db=4.4ms queue=0.1ms idle=19.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 85만원", "91c1291c-1a86-4a32-8804-d64bb5bf7c42", "https://www.youtube.com/watch?v=h-LWWCXvTrM", "h-LWWCXvTrM", false, 105, false, 3, "/downloads/조은미싱/2025-12-17 (판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 85만원/(판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 85만원 [h-LWWCXvTrM].mkv", false, false, 4, [], 98, ~U[2025-12-17 07:24:46Z], ~U[2025-12-24 01:27:06Z], ~U[2025-12-24 01:27:06Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 85만원", "https://www.youtube.com/watch?v=h-LWWCXvTrM", "h-LWWCXvTrM", 105, false, "/downloads/조은미싱/2025-12-17 (판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 85만원/(판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 85만원 [h-LWWCXvTrM].mkv", false, 4, ~U[2025-12-17 07:24:46Z]] 01:27:06.812 [debug] QUERY OK source="sources" db=1.6ms queue=0.2ms idle=19.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 01:27:06.817 [debug] QUERY OK source="media_items" db=4.3ms queue=0.1ms idle=14.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-15 08:05:30Z], 4] 01:27:06.818 [debug] QUERY OK source="media_items" db=0.6ms idle=16.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "HIKARI (히카리) H98S 왕가마 본봉사절미싱 중고 79만원", "13e6ae04-de32-4622-81d3-e6308922d31b", "https://www.youtube.com/watch?v=e_BQWqfRYGA", "e_BQWqfRYGA", false, 144, false, 4, "/downloads/조은미싱/2025-12-15 HIKARI (히카리) H98S 왕가마 본봉사절미싱 중고 79만원/HIKARI (히카리) H98S 왕가마 본봉사절미싱 중고 79만원 [e_BQWqfRYGA].mkv", false, false, 4, [], 98, ~U[2025-12-15 08:05:30Z], ~U[2025-12-24 01:27:06Z], ~U[2025-12-24 01:27:06Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "HIKARI (히카리) H98S 왕가마 본봉사절미싱 중고 79만원", "https://www.youtube.com/watch?v=e_BQWqfRYGA", "e_BQWqfRYGA", 144, false, "/downloads/조은미싱/2025-12-15 HIKARI (히카리) H98S 왕가마 본봉사절미싱 중고 79만원/HIKARI (히카리) H98S 왕가마 본봉사절미싱 중고 79만원 [e_BQWqfRYGA].mkv", false, 4, ~U[2025-12-15 08:05:30Z]] 01:27:06.819 [debug] QUERY OK source="sources" db=0.8ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 01:27:06.822 [debug] QUERY OK source="media_items" db=2.5ms 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[2025-12-12 09:07:06Z], 4] 01:27:06.823 [debug] QUERY OK source="media_items" db=0.7ms idle=10.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "트레저 BS-101 스쿠이 중고 95만원", "701730c0-2201-449d-aa24-71f79796034d", "https://www.youtube.com/watch?v=YpUHHCTOW6c", "YpUHHCTOW6c", false, 92, false, 5, "/downloads/조은미싱/2025-12-12 트레저 BS-101 스쿠이 중고 95만원/트레저 BS-101 스쿠이 중고 95만원 [YpUHHCTOW6c].mkv", false, false, 4, [], 97, ~U[2025-12-12 09:07:06Z], ~U[2025-12-24 01:27:06Z], ~U[2025-12-24 01:27:06Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "트레저 BS-101 스쿠이 중고 95만원", "https://www.youtube.com/watch?v=YpUHHCTOW6c", "YpUHHCTOW6c", 92, false, "/downloads/조은미싱/2025-12-12 트레저 BS-101 스쿠이 중고 95만원/트레저 BS-101 스쿠이 중고 95만원 [YpUHHCTOW6c].mkv", false, 4, ~U[2025-12-12 09:07:06Z]] 01:27:06.824 [debug] QUERY OK source="sources" db=0.6ms idle=6.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 01:27:06.827 [debug] QUERY OK source="media_items" db=2.4ms idle=6.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-12 08:55:04Z], 4] 01:27:06.828 [debug] QUERY OK source="media_items" db=0.6ms idle=7.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "썬스타 KM-640BL 수동 상하송 중고 85만원", "a7b3037c-f289-4677-b597-fa8867d6a2eb", "https://www.youtube.com/watch?v=dyWLUB6VFtw", "dyWLUB6VFtw", false, 143, false, 6, "/downloads/조은미싱/2025-12-12 썬스타 KM-640BL 수동 상하송 중고 85만원/썬스타 KM-640BL 수동 상하송 중고 85만원 [dyWLUB6VFtw].mkv", false, false, 4, [], 97, ~U[2025-12-12 08:55:04Z], ~U[2025-12-24 01:27:06Z], ~U[2025-12-24 01:27:06Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "썬스타 KM-640BL 수동 상하송 중고 85만원", "https://www.youtube.com/watch?v=dyWLUB6VFtw", "dyWLUB6VFtw", 143, false, "/downloads/조은미싱/2025-12-12 썬스타 KM-640BL 수동 상하송 중고 85만원/썬스타 KM-640BL 수동 상하송 중고 85만원 [dyWLUB6VFtw].mkv", false, 4, ~U[2025-12-12 08:55:04Z]] 01:27:06.829 [debug] QUERY OK source="sources" db=0.6ms idle=6.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 01:27:06.831 [debug] QUERY OK source="media_items" db=2.5ms idle=5.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-11 08:49:06Z], 4] 01:27:06.833 [debug] QUERY OK source="media_items" db=0.7ms idle=7.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 시리우스 B8 본봉사절미싱 중고 81만원", "e47b168e-d0a7-4fc2-9eda-6fcbd9e6b8d0", "https://www.youtube.com/watch?v=07_Q0dvbUXU", "07_Q0dvbUXU", false, 129, false, 7, "/downloads/조은미싱/2025-12-11 (판매완료) 시리우스 B8 본봉사절미싱 중고 81만원/(판매완료) 시리우스 B8 본봉사절미싱 중고 81만원 [07_Q0dvbUXU].mkv", false, false, 4, [], 97, ~U[2025-12-11 08:49:06Z], ~U[2025-12-24 01:27:06Z], ~U[2025-12-24 01:27:06Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 시리우스 B8 본봉사절미싱 중고 81만원", "https://www.youtube.com/watch?v=07_Q0dvbUXU", "07_Q0dvbUXU", 129, false, "/downloads/조은미싱/2025-12-11 (판매완료) 시리우스 B8 본봉사절미싱 중고 81만원/(판매완료) 시리우스 B8 본봉사절미싱 중고 81만원 [07_Q0dvbUXU].mkv", false, 4, ~U[2025-12-11 08:49:06Z]] 01:27:06.833 [debug] QUERY OK source="sources" db=0.6ms idle=6.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 01:27:06.836 [debug] QUERY OK source="media_items" db=2.2ms 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[2025-12-11 02:44:11Z], 4] 01:27:06.837 [debug] QUERY OK source="media_items" db=0.6ms idle=7.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 골든휠 CS-747 피할기 중고 60만원 (대만제)", "57a3b561-a02f-4342-8ed7-461bcbf56d29", "https://www.youtube.com/watch?v=oS2N43NfvJw", "oS2N43NfvJw", false, 81, false, 8, "/downloads/조은미싱/2025-12-11 (판매완료) 골든휠 CS-747 피할기 중고 60만원 (대만제)/(판매완료) 골든휠 CS-747 피할기 중고 60만원 (대만제) [oS2N43NfvJw].mkv", false, false, 4, [], 97, ~U[2025-12-11 02:44:11Z], ~U[2025-12-24 01:27:06Z], ~U[2025-12-24 01:27:06Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 골든휠 CS-747 피할기 중고 60만원 (대만제)", "https://www.youtube.com/watch?v=oS2N43NfvJw", "oS2N43NfvJw", 81, false, "/downloads/조은미싱/2025-12-11 (판매완료) 골든휠 CS-747 피할기 중고 60만원 (대만제)/(판매완료) 골든휠 CS-747 피할기 중고 60만원 (대만제) [oS2N43NfvJw].mkv", false, 4, ~U[2025-12-11 02:44:11Z]] 01:27:06.838 [debug] QUERY OK source="sources" db=0.5ms 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" = ?) [4] 01:27:06.841 [debug] QUERY OK source="media_items" db=2.5ms 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[2025-12-10 08:42:24Z], 4] 01:27:06.842 [debug] QUERY OK source="media_items" db=0.6ms idle=7.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "JAPSEW J-27 멜로스티치 기초 사용 안내", "64c32064-4059-446c-8710-11e987120733", "https://www.youtube.com/watch?v=NZYINPJag2I", "NZYINPJag2I", false, 299, false, 9, "/downloads/조은미싱/2025-12-10 JAPSEW J-27 멜로스티치 기초 사용 안내/JAPSEW J-27 멜로스티치 기초 사용 안내 [NZYINPJag2I].mkv", false, false, 4, [], 97, ~U[2025-12-10 08:42:24Z], ~U[2025-12-24 01:27:06Z], ~U[2025-12-24 01:27:06Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "JAPSEW J-27 멜로스티치 기초 사용 안내", "https://www.youtube.com/watch?v=NZYINPJag2I", "NZYINPJag2I", 299, false, "/downloads/조은미싱/2025-12-10 JAPSEW J-27 멜로스티치 기초 사용 안내/JAPSEW J-27 멜로스티치 기초 사용 안내 [NZYINPJag2I].mkv", false, 4, ~U[2025-12-10 08:42:24Z]] 01:27:06.843 [debug] QUERY OK source="sources" db=0.5ms idle=6.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 01:27:06.845 [debug] QUERY OK source="media_items" db=2.4ms idle=5.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-10 08:00:18Z], 4] 01:27:06.846 [debug] QUERY OK source="media_items" db=0.6ms idle=7.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "하이리드 (HIGHLEAD) GC0618-1 총합송 기초 사용 안내", "63b7b6df-abc9-4955-b186-08e509dfbacd", "https://www.youtube.com/watch?v=o_xotBT77rE", "o_xotBT77rE", false, 190, false, 10, "/downloads/조은미싱/2025-12-10 하이리드 (HIGHLEAD) GC0618-1 총합송 기초 사용 안내/하이리드 (HIGHLEAD) GC0618-1 총합송 기초 사용 안내 [o_xotBT77rE].mkv", false, false, 4, [], 97, ~U[2025-12-10 08:00:18Z], ~U[2025-12-24 01:27:06Z], ~U[2025-12-24 01:27:06Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "하이리드 (HIGHLEAD) GC0618-1 총합송 기초 사용 안내", "https://www.youtube.com/watch?v=o_xotBT77rE", "o_xotBT77rE", 190, false, "/downloads/조은미싱/2025-12-10 하이리드 (HIGHLEAD) GC0618-1 총합송 기초 사용 안내/하이리드 (HIGHLEAD) GC0618-1 총합송 기초 사용 안내 [o_xotBT77rE].mkv", false, 4, ~U[2025-12-10 08:00:18Z]] 01:27:06.847 [debug] QUERY OK source="sources" db=0.6ms 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] 01:27:06.850 [debug] QUERY OK source="media_items" db=2.3ms 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[2025-12-08 09:32:26Z], 4] 01:27:06.851 [debug] QUERY OK source="media_items" db=0.8ms idle=7.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 썬스타 KM-235A 본봉사절미싱 중고 42만원", "1326f07e-0240-4cd0-8796-51870aca3993", "https://www.youtube.com/watch?v=ckiSECdMGOs", "ckiSECdMGOs", false, 110, false, 11, "/downloads/조은미싱/2025-12-08 (판매완료) 썬스타 KM-235A 본봉사절미싱 중고 42만원/(판매완료) 썬스타 KM-235A 본봉사절미싱 중고 42만원 [ckiSECdMGOs].mkv", false, false, 4, [], 98, ~U[2025-12-08 09:32:26Z], ~U[2025-12-24 01:27:06Z], ~U[2025-12-24 01:27:06Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 썬스타 KM-235A 본봉사절미싱 중고 42만원", "https://www.youtube.com/watch?v=ckiSECdMGOs", "ckiSECdMGOs", 110, false, "/downloads/조은미싱/2025-12-08 (판매완료) 썬스타 KM-235A 본봉사절미싱 중고 42만원/(판매완료) 썬스타 KM-235A 본봉사절미싱 중고 42만원 [ckiSECdMGOs].mkv", false, 4, ~U[2025-12-08 09:32:26Z]] 01:27:06.852 [debug] QUERY OK source="sources" db=0.5ms 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] 01:27:06.854 [debug] QUERY OK source="media_items" db=2.2ms queue=0.1ms 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[2025-12-02 09:18:15Z], 4] 01:27:06.855 [debug] QUERY OK source="media_items" db=0.6ms idle=7.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "시리우스 오버록 차동 조절 부품 탈착 방법", "0811fa65-6039-46c6-83c3-1577fd5ddaec", "https://www.youtube.com/watch?v=QNvEznvHQ98", "QNvEznvHQ98", false, 247, false, 12, "/downloads/조은미싱/2025-12-02 시리우스 오버록 차동 조절 부품 탈착 방법/시리우스 오버록 차동 조절 부품 탈착 방법 [QNvEznvHQ98].mkv", false, false, 4, [], 97, ~U[2025-12-02 09:18:15Z], ~U[2025-12-24 01:27:06Z], ~U[2025-12-24 01:27:06Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "시리우스 오버록 차동 조절 부품 탈착 방법", "https://www.youtube.com/watch?v=QNvEznvHQ98", "QNvEznvHQ98", 247, false, "/downloads/조은미싱/2025-12-02 시리우스 오버록 차동 조절 부품 탈착 방법/시리우스 오버록 차동 조절 부품 탈착 방법 [QNvEznvHQ98].mkv", false, 4, ~U[2025-12-02 09:18:15Z]] 01:27:06.856 [debug] QUERY OK source="sources" db=0.5ms 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] 01:27:06.859 [debug] QUERY OK source="media_items" db=2.3ms 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[2025-12-02 05:52:13Z], 4] 01:27:06.860 [debug] QUERY OK source="media_items" db=0.9ms idle=7.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "본봉미싱 발판 연결대 (쓰리보) 교환 방법", "160a2619-183d-4d73-b5aa-c970129f3857", "https://www.youtube.com/watch?v=et6aY7oIJSk", "et6aY7oIJSk", false, 98, false, 13, "/downloads/조은미싱/2025-12-02 본봉미싱 발판 연결대 (쓰리보) 교환 방법/본봉미싱 발판 연결대 (쓰리보) 교환 방법 [et6aY7oIJSk].mkv", false, false, 4, [], 97, ~U[2025-12-02 05:52:13Z], ~U[2025-12-24 01:27:06Z], ~U[2025-12-24 01:27:06Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "본봉미싱 발판 연결대 (쓰리보) 교환 방법", "https://www.youtube.com/watch?v=et6aY7oIJSk", "et6aY7oIJSk", 98, false, "/downloads/조은미싱/2025-12-02 본봉미싱 발판 연결대 (쓰리보) 교환 방법/본봉미싱 발판 연결대 (쓰리보) 교환 방법 [et6aY7oIJSk].mkv", false, 4, ~U[2025-12-02 05:52:13Z]] 01:27:06.861 [debug] QUERY OK source="sources" db=0.5ms 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" = ?) [4] 01:27:06.863 [debug] QUERY OK source="media_items" db=2.5ms 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[2025-12-01 09:15:28Z], 4] 01:27:06.865 [debug] QUERY OK source="media_items" db=0.7ms idle=7.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "야마토 VC1700-156M-8F 사절삼봉 중고 160만원 (※ 컴프레서 별매)", "4a295d7d-e8b5-412b-a116-9a34eecbddd2", "https://www.youtube.com/watch?v=62VTNIHDPOM", "62VTNIHDPOM", false, 79, false, 14, "/downloads/조은미싱/2025-12-01 야마토 VC1700-156M-8F 사절삼봉 중고 160만원 (※ 컴프레서 별매)/야마토 VC1700-156M-8F 사절삼봉 중고 160만원 (※ 컴프레서 별매) [62VTNIHDPOM].mkv", false, false, 4, [], 98, ~U[2025-12-01 09:15:28Z], ~U[2025-12-24 01:27:06Z], ~U[2025-12-24 01:27:06Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "야마토 VC1700-156M-8F 사절삼봉 중고 160만원 (※ 컴프레서 별매)", "https://www.youtube.com/watch?v=62VTNIHDPOM", "62VTNIHDPOM", 79, false, "/downloads/조은미싱/2025-12-01 야마토 VC1700-156M-8F 사절삼봉 중고 160만원 (※ 컴프레서 별매)/야마토 VC1700-156M-8F 사절삼봉 중고 160만원 (※ 컴프레서 별매) [62VTNIHDPOM].mkv", false, 4, ~U[2025-12-01 09:15:28Z]] 01:27:06.866 [debug] QUERY OK source="sources" db=0.7ms idle=6.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 01:27:06.868 [debug] QUERY OK source="media_items" db=2.2ms 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[2025-11-26 10:03:06Z], 4] 01:27:06.869 [debug] QUERY OK source="media_items" db=0.7ms idle=7.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 페가수스 EX5214 오버록 (일제) 중고 100만원", "6bcdc69e-a2e8-4855-846e-0761832a67bb", "https://www.youtube.com/watch?v=r7TdDjX7Xn4", "r7TdDjX7Xn4", false, 169, false, 15, "/downloads/조은미싱/2025-11-26 (판매완료) 페가수스 EX5214 오버록 (일제) 중고 100만원/(판매완료) 페가수스 EX5214 오버록 (일제) 중고 100만원 [r7TdDjX7Xn4].mkv", false, false, 4, [], 98, ~U[2025-11-26 10:03:06Z], ~U[2025-12-24 01:27:06Z], ~U[2025-12-24 01:27:06Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 페가수스 EX5214 오버록 (일제) 중고 100만원", "https://www.youtube.com/watch?v=r7TdDjX7Xn4", "r7TdDjX7Xn4", 169, false, "/downloads/조은미싱/2025-11-26 (판매완료) 페가수스 EX5214 오버록 (일제) 중고 100만원/(판매완료) 페가수스 EX5214 오버록 (일제) 중고 100만원 [r7TdDjX7Xn4].mkv", false, 4, ~U[2025-11-26 10:03:06Z]] 01:27:06.870 [debug] QUERY OK source="sources" db=0.6ms idle=5.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 01:27:06.873 [debug] QUERY OK source="media_items" db=2.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[2025-11-25 09:04:05Z], 4] 01:27:06.874 [debug] QUERY OK source="media_items" db=0.6ms idle=7.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 니피 (NIPPY) NP~1 피할기 중고 130만원", "d207a89b-41c0-4d2e-8cf2-85dd20fae865", "https://www.youtube.com/watch?v=S70ajRIMZLU", "S70ajRIMZLU", false, 53, false, 16, "/downloads/조은미싱/2025-11-25 (판매완료) 니피 (NIPPY) NP~1 피할기 중고 130만원/(판매완료) 니피 (NIPPY) NP~1 피할기 중고 130만원 [S70ajRIMZLU].mkv", false, false, 4, [], 98, ~U[2025-11-25 09:04:05Z], ~U[2025-12-24 01:27:06Z], ~U[2025-12-24 01:27:06Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 니피 (NIPPY) NP~1 피할기 중고 130만원", "https://www.youtube.com/watch?v=S70ajRIMZLU", "S70ajRIMZLU", 53, false, "/downloads/조은미싱/2025-11-25 (판매완료) 니피 (NIPPY) NP~1 피할기 중고 130만원/(판매완료) 니피 (NIPPY) NP~1 피할기 중고 130만원 [S70ajRIMZLU].mkv", false, 4, ~U[2025-11-25 09:04:05Z]] 01:27:06.874 [debug] QUERY OK source="sources" db=0.6ms idle=5.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 01:27:06.877 [debug] QUERY OK source="media_items" db=2.2ms 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[2025-11-22 07:17:13Z], 4] 01:27:06.878 [debug] QUERY OK source="media_items" db=0.6ms idle=7.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "오버록 옵션 중 돈값 하는 기능! 흡입기 사절 장치 파헤치기", "912c2d0b-0ee0-4f2b-8966-0f5a6f9c8a21", "https://www.youtube.com/watch?v=GW-D_jyqQyQ", "GW-D_jyqQyQ", false, 65, false, 17, "/downloads/조은미싱/2025-11-22 오버록 옵션 중 돈값 하는 기능! 흡입기 사절 장치 파헤치기/오버록 옵션 중 돈값 하는 기능! 흡입기 사절 장치 파헤치기 [GW-D_jyqQyQ].mkv", false, false, 4, [], 96, ~U[2025-11-22 07:17:13Z], ~U[2025-12-24 01:27:06Z], ~U[2025-12-24 01:27:06Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "오버록 옵션 중 돈값 하는 기능! 흡입기 사절 장치 파헤치기", "https://www.youtube.com/watch?v=GW-D_jyqQyQ", "GW-D_jyqQyQ", 65, false, "/downloads/조은미싱/2025-11-22 오버록 옵션 중 돈값 하는 기능! 흡입기 사절 장치 파헤치기/오버록 옵션 중 돈값 하는 기능! 흡입기 사절 장치 파헤치기 [GW-D_jyqQyQ].mkv", false, 4, ~U[2025-11-22 07:17:13Z]] 01:27:06.879 [debug] QUERY OK source="sources" db=0.6ms idle=5.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 01:27:06.882 [debug] QUERY OK source="media_items" db=2.5ms idle=5.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-22 07:01:06Z], 4] 01:27:06.884 [debug] QUERY OK source="media_items" db=1.7ms idle=7.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 72만원", "edcc02ea-5454-4201-b7f3-5063990e45a7", "https://www.youtube.com/watch?v=_c9ExwmEz6M", "_c9ExwmEz6M", false, 123, false, 18, "/downloads/조은미싱/2025-11-22 (판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 72만원/(판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 72만원 [_c9ExwmEz6M].mkv", false, false, 4, [], 96, ~U[2025-11-22 07:01:06Z], ~U[2025-12-24 01:27:06Z], ~U[2025-12-24 01:27:06Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 72만원", "https://www.youtube.com/watch?v=_c9ExwmEz6M", "_c9ExwmEz6M", 123, false, "/downloads/조은미싱/2025-11-22 (판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 72만원/(판매완료) 부라더 S-7300A-403P 본봉사절미싱 중고 72만원 [_c9ExwmEz6M].mkv", false, 4, ~U[2025-11-22 07:01:06Z]] 01:27:06.885 [debug] QUERY OK source="sources" db=0.7ms idle=7.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 01:27:06.888 [debug] QUERY OK source="media_items" db=2.6ms idle=7.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-22 06:32:37Z], 4] 01:27:06.889 [debug] QUERY OK source="media_items" db=0.8ms idle=9.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 시리우스 SR5200-4D 오버록 중고 94만원 (흡입기사절장치 포함)", "bf634e19-83ce-47a8-a7fd-ab7cc4245e3e", "https://www.youtube.com/watch?v=4pKPduSU7lo", "4pKPduSU7lo", false, 178, false, 19, "/downloads/조은미싱/2025-11-22 (판매완료) 시리우스 SR5200-4D 오버록 중고 94만원 (흡입기사절장치 포함)/(판매완료) 시리우스 SR5200-4D 오버록 중고 94만원 (흡입기사절장치 포함) [4pKPduSU7lo].mkv", false, false, 4, [], 96, ~U[2025-11-22 06:32:37Z], ~U[2025-12-24 01:27:06Z], ~U[2025-12-24 01:27:06Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 시리우스 SR5200-4D 오버록 중고 94만원 (흡입기사절장치 포함)", "https://www.youtube.com/watch?v=4pKPduSU7lo", "4pKPduSU7lo", 178, false, "/downloads/조은미싱/2025-11-22 (판매완료) 시리우스 SR5200-4D 오버록 중고 94만원 (흡입기사절장치 포함)/(판매완료) 시리우스 SR5200-4D 오버록 중고 94만원 (흡입기사절장치 포함) [4pKPduSU7lo].mkv", false, 4, ~U[2025-11-22 06:32:37Z]] 01:27:06.890 [debug] QUERY OK source="sources" db=0.7ms idle=7.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 01:27:06.893 [debug] QUERY OK source="media_items" db=2.6ms idle=6.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-17 10:27:48Z], 4] 01:27:06.895 [debug] QUERY OK source="media_items" db=0.8ms idle=8.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 시리우스 B8 본봉사절미싱 중고 74만원", "883654c8-1548-4760-bae7-26c1984454e7", "https://www.youtube.com/watch?v=AlDM6ZGKD6o", "AlDM6ZGKD6o", false, 129, false, 20, "/downloads/조은미싱/2025-11-17 (판매완료) 시리우스 B8 본봉사절미싱 중고 74만원/(판매완료) 시리우스 B8 본봉사절미싱 중고 74만원 [AlDM6ZGKD6o].mkv", false, false, 4, [], 97, ~U[2025-11-17 10:27:48Z], ~U[2025-12-24 01:27:06Z], ~U[2025-12-24 01:27:06Z], "다양한 공업용미싱과 재봉 관련 부자재를 판매하는 업체, [조은미싱]입니다. \n\n문의 '010-5281-5521'\n전화/문자/카톡 상담 가능 📞💬\n부담없이 연락 주세요!! 📲\n\n미싱을 구매하시면, \n전국 어느 지역이든 조은미싱에서 직접 배송·설치해 드립니다. 🧑🏻 🔧 (제주도 제외)\n----------\n\n하단에 게재된 링크들을 통해,\n미싱/부자재 등의 🪡🧵\n많고 유용한 상품들을 만나 보세요!! 🛒\n\n▶ 조은미싱(공식 홈페이지) - http://www.joymising.com/\n\n▶ 조은미싱(네이버_스마트스토어) - https://smartstore.naver.com/joymising\n\n▶ 조은미싱(쿠팡_스토어) - https://store.coupang.com/vp/vendors/A00153955/products", "(판매완료) 시리우스 B8 본봉사절미싱 중고 74만원", "https://www.youtube.com/watch?v=AlDM6ZGKD6o", "AlDM6ZGKD6o", 129, false, "/downloads/조은미싱/2025-11-17 (판매완료) 시리우스 B8 본봉사절미싱 중고 74만원/(판매완료) 시리우스 B8 본봉사절미싱 중고 74만원 [AlDM6ZGKD6o].mkv", false, 4, ~U[2025-11-17 10:27:48Z]] 01:27:06.896 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=7.0ms UPDATE "sources" SET "last_indexed_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2025-12-24 01:27:06Z], ~U[2025-12-24 01:27:06Z], 4] 01:27:06.899 [debug] QUERY OK source="media_items" db=2.6ms idle=6.8ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 01:27:06.901 [debug] QUERY OK source="tasks" db=0.2ms idle=6.5ms INSERT INTO "tasks" ("job_id","media_item_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [7413, 17876, ~U[2025-12-24 01:27:06Z], ~U[2025-12-24 01:27:06Z]] 01:27:06.903 [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" [7414, 19395, ~U[2025-12-24 01:27:06Z], ~U[2025-12-24 01:27:06Z]] 01:27:06.908 [info] {"args":{"id":17876},"id":7413,"meta":{},"system_time":1766539626908146585,"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"]} 01:27:06.908 [info] {"args":{"id":19395},"id":7414,"meta":{},"system_time":1766539626908423965,"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"]} 01:27:06.909 [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 WHERE (m0."id" = ?) [17876] 01:27:06.909 [info] User scripts lifecyle file either not present or is empty. Skipping. 01:27:06.909 [debug] QUERY OK source="media_items" db=0.4ms 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" = ?) [19395] 01:27:06.909 [info] User scripts lifecyle file either not present or is empty. Skipping. 01:27:06.909 [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] 01:27:06.910 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms 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] 01:27:06.910 [debug] QUERY OK source="media_profiles" db=0.6ms queue=0.1ms 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] 01:27:06.910 [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] 01:27:06.911 [debug] QUERY OK source="media_items" db=0.7ms 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 [19395] 01:27:06.911 [debug] QUERY OK source="media_items" db=0.8ms queue=0.1ms 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 [17876] 01:27:06.914 [debug] QUERY OK source="media_items" db=2.2ms idle=1.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] 01:27:06.915 [debug] QUERY OK source="media_items" db=0.4ms idle=3.9ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [4] 01:27:06.916 [debug] QUERY OK source="tasks" db=0.2ms idle=4.4ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [7415, 4, ~U[2025-12-24 01:27:06Z], ~U[2025-12-24 01:27:06Z]] 01:27:06.917 [info] {"args":{"id":4},"id":7399,"meta":{},"state":"success","max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","duration":44528435,"event":"job:stop","queue_time":723338,"attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 01:27:06.921 [debug] QUERY OK source="media_metadata" db=0.2ms idle=5.6ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [17876] 01:27:06.921 [debug] QUERY OK source="media_metadata" db=0.2ms idle=5.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" = ?) [19395] 01:27:06.921 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 01:27:06.921 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms 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] 01:27:06.922 [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 [] 01:27:06.922 [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 [] 01:27:06.922 [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 [] 01:27:06.922 [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 [] 01:27:06.922 [debug] Running yt-dlp command for action: get_downloadable_status 01:27:06.922 [debug] Running yt-dlp command for action: get_downloadable_status 01:27:06.923 [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 [] 01:27:06.923 [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 [] 01:27:06.923 [debug] QUERY OK source="settings" db=0.5ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:27:06.924 [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 [] 01:27:06.924 [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 [] 01:27:06.924 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0a/59/0a591aa402457d46f7c78eacd3c9472df7e8d44e03f23e90127aa64034af508f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 01:27:06.924 [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 [] 01:27:06.924 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=159XKrot3AA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3e/a7/3ea7f12e133e6aa3a047eb50ca4b14013337284315c0af1fec1f8cddaea7dba4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 01:27:08.817 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=159XKrot3AA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3e/a7/3ea7f12e133e6aa3a047eb50ca4b14013337284315c0af1fec1f8cddaea7dba4.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] 159XKrot3AA: Video unavailable 01:27:08.817 [error] yt-dlp download error for media item #17876: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime 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] 159XKrot3AA: Video unavailable\n" 01:27:08.817 [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] 159XKrot3AA: Video unavailable\n" 01:27:08.818 [info] {"args":{"id":17876},"id":7413,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":1909414,"event":"job:stop","queue_time":907232,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 01:27:09.962 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/0a/59/0a591aa402457d46f7c78eacd3c9472df7e8d44e03f23e90127aa64034af508f.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: [youtube] 3OK8Z2sl5wA: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 3OK8Z2sl5wA: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 01:27:09.962 [debug] Running yt-dlp command for action: download 01:27:09.962 [debug] QUERY OK source="settings" db=0.3ms idle=1848.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:27:09.963 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=1482.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:27:09.963 [debug] QUERY OK source="settings" db=0.1ms idle=1145.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:27:09.964 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/a1/a1/a1a17321a9eeb4d7eb5370636191ccb5eb43b1f944380e2d4a72f813d5426c37.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 01:27:13.140 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/a1/a1/a1a17321a9eeb4d7eb5370636191ccb5eb43b1f944380e2d4a72f813d5426c37.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 WARNING: [youtube] 3OK8Z2sl5wA: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 3OK8Z2sl5wA: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 01:27:13.140 [error] yt-dlp download error for media item #19395: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] 3OK8Z2sl5wA: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] 3OK8Z2sl5wA: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 01:27:13.141 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":19395},"id":7414,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6232261,"event":"job:exception","queue_time":907232,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 01:27:19.986 [info] {"source":"oban","duration":2278,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:27:31.537 [info] {"args":{"id":19395},"id":7414,"meta":{},"system_time":1766539651537681443,"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"]} 01:27:31.538 [debug] QUERY OK source="media_items" db=0.1ms idle=423.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" = ?) [19395] 01:27:31.538 [info] User scripts lifecyle file either not present or is empty. Skipping. 01:27:31.538 [debug] QUERY OK source="sources" db=0.2ms idle=423.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 01:27:31.539 [debug] QUERY OK source="media_profiles" db=0.1ms idle=424.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] 01:27:31.539 [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 [19395] 01:27:31.540 [debug] QUERY OK source="media_metadata" db=0.1ms idle=2.3ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [19395] 01:27:31.540 [debug] QUERY OK source="media_profiles" db=0.2ms 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] 01:27:31.541 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:27:31.541 [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 [] 01:27:31.541 [debug] Running yt-dlp command for action: get_downloadable_status 01:27:31.542 [debug] QUERY OK source="settings" db=0.1ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:27:31.542 [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 [] 01:27:31.542 [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 [] 01:27:31.543 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e9/d1/e9d1dc7670a30364532362434afa75cda1fc21c2577a65d6689c402bfcdc04f9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 01:27:34.396 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e9/d1/e9d1dc7670a30364532362434afa75cda1fc21c2577a65d6689c402bfcdc04f9.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: [youtube] 3OK8Z2sl5wA: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 3OK8Z2sl5wA: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 01:27:34.396 [debug] Running yt-dlp command for action: download 01:27:34.397 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1282.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:27:34.398 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1283.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:27:34.398 [debug] QUERY OK source="settings" db=0.1ms idle=1283.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:27:34.398 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/58/a5/58a567713cc5ed8b6cf907d2fd6fae22d619f0af2568cc6e7b9793bd6bb94a66.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 01:27:37.828 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/58/a5/58a567713cc5ed8b6cf907d2fd6fae22d619f0af2568cc6e7b9793bd6bb94a66.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 WARNING: [youtube] 3OK8Z2sl5wA: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 3OK8Z2sl5wA: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 01:27:37.828 [error] yt-dlp download error for media item #19395: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] 3OK8Z2sl5wA: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] 3OK8Z2sl5wA: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 01:27:37.830 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":19395},"id":7414,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6291610,"event":"job:exception","queue_time":395611,"attempt":2,"tags":["media_item","media_fetching","show_in_dashboard"]} 01:27:49.988 [info] {"source":"oban","duration":1427,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:27:58.600 [info] {"args":{"id":19395},"id":7414,"meta":{},"system_time":1766539678600650762,"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"]} 01:27:58.601 [debug] QUERY OK source="media_items" db=0.2ms idle=1486.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" = ?) [19395] 01:27:58.601 [info] User scripts lifecyle file either not present or is empty. Skipping. 01:27:58.601 [debug] QUERY OK source="sources" db=0.2ms idle=1486.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 01:27:58.602 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1010.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] 01:27:58.602 [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 [19395] 01:27:58.603 [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" = ?) [19395] 01:27:58.603 [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] 01:27:58.604 [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 [] 01:27:58.604 [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 [] 01:27:58.604 [debug] Running yt-dlp command for action: get_downloadable_status 01:27:58.605 [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 [] 01:27:58.605 [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 [] 01:27:58.606 [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 [] 01:27:58.606 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/6d/4e/6d4ec5a9f77bccb447dfc28d718e94e5b0d6ebe52a9dedcb5d927394c72f77fa.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 01:28:00.129 [info] {"source":"oban","duration":328,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:28:01.521 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/6d/4e/6d4ec5a9f77bccb447dfc28d718e94e5b0d6ebe52a9dedcb5d927394c72f77fa.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: [youtube] 3OK8Z2sl5wA: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 3OK8Z2sl5wA: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 01:28:01.522 [debug] Running yt-dlp command for action: download 01:28:01.522 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1407.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:28:01.523 [debug] QUERY OK source="settings" db=0.2ms idle=1408.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:28:01.523 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=1408.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:28:01.524 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/b8/0c/b80c75ed8fae2d1b6bad1e7e33e83effa6f71024396d6a0ec3c28538c39c3127.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 01:28:05.175 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/b8/0c/b80c75ed8fae2d1b6bad1e7e33e83effa6f71024396d6a0ec3c28538c39c3127.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 WARNING: [youtube] 3OK8Z2sl5wA: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 3OK8Z2sl5wA: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 01:28:05.175 [error] yt-dlp download error for media item #19395: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] 3OK8Z2sl5wA: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] 3OK8Z2sl5wA: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 01:28:05.176 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":19395},"id":7414,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6575319,"event":"job:exception","queue_time":769986,"attempt":3,"tags":["media_item","media_fetching","show_in_dashboard"]} 01:28:19.990 [info] {"source":"oban","duration":1110,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:28:28.658 [info] {"args":{"id":19395},"id":7414,"meta":{},"system_time":1766539708658508480,"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"]} 01:28:28.659 [debug] QUERY OK source="media_items" db=0.2ms idle=1544.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" = ?) [19395] 01:28:28.659 [info] User scripts lifecyle file either not present or is empty. Skipping. 01:28:28.659 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1544.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 01:28:28.660 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1010.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] 01:28:28.660 [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 [19395] 01:28:28.661 [debug] QUERY OK source="media_metadata" db=0.2ms 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" = ?) [19395] 01:28:28.661 [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] 01:28:28.662 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:28:28.662 [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 [] 01:28:28.662 [debug] Running yt-dlp command for action: get_downloadable_status 01:28:28.663 [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 [] 01:28:28.663 [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 [] 01:28:28.663 [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 [] 01:28:28.663 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ce/b2/ceb23ac64e0a8f87d4e94738bcd3ed1e1676b41e972146cfee5564f927ce8ec1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 01:28:31.340 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ce/b2/ceb23ac64e0a8f87d4e94738bcd3ed1e1676b41e972146cfee5564f927ce8ec1.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: [youtube] 3OK8Z2sl5wA: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 3OK8Z2sl5wA: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 01:28:31.341 [debug] Running yt-dlp command for action: download 01:28:31.341 [debug] QUERY OK source="settings" db=0.2ms idle=1226.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:28:31.342 [debug] QUERY OK source="settings" db=0.1ms idle=1227.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:28:31.342 [debug] QUERY OK source="settings" db=0.3ms idle=1227.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:28:31.342 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/cd/42/cd42b6fc858a9464166b4d641de3a3d790bd797c26858753392d5a6fc24f38c9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 01:28:34.940 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/cd/42/cd42b6fc858a9464166b4d641de3a3d790bd797c26858753392d5a6fc24f38c9.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 WARNING: [youtube] 3OK8Z2sl5wA: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 3OK8Z2sl5wA: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 01:28:34.940 [error] yt-dlp download error for media item #19395: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] 3OK8Z2sl5wA: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] 3OK8Z2sl5wA: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 01:28:34.941 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":19395},"id":7414,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6282446,"event":"job:exception","queue_time":481299,"attempt":4,"tags":["media_item","media_fetching","show_in_dashboard"]} 01:28:49.992 [info] {"source":"oban","duration":1509,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:29:00.130 [info] {"source":"oban","duration":303,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:29:08.746 [info] {"args":{"id":19395},"id":7414,"meta":{},"system_time":1766539748746106377,"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"]} 01:29:08.746 [debug] QUERY OK source="media_items" db=0.2ms idle=631.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" = ?) [19395] 01:29:08.746 [info] User scripts lifecyle file either not present or is empty. Skipping. 01:29:08.747 [debug] QUERY OK source="sources" db=0.2ms idle=632.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] 01:29:08.747 [debug] QUERY OK source="media_profiles" db=0.1ms idle=632.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] 01:29:08.747 [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 [19395] 01:29:08.748 [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" = ?) [19395] 01:29:08.749 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=2.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 01:29:08.749 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:29:08.750 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:29:08.750 [debug] Running yt-dlp command for action: get_downloadable_status 01:29:08.750 [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 [] 01:29:08.751 [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 [] 01:29:08.751 [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 [] 01:29:08.751 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/04/8e/048e17cf18ad6e288ef744a18a2cc52e0d32f7539a5d084889e4ee9655bea552.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 01:29:11.559 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/04/8e/048e17cf18ad6e288ef744a18a2cc52e0d32f7539a5d084889e4ee9655bea552.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: [youtube] 3OK8Z2sl5wA: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 3OK8Z2sl5wA: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 01:29:11.559 [debug] Running yt-dlp command for action: download 01:29:11.560 [debug] QUERY OK source="settings" db=0.3ms idle=1445.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:29:11.560 [debug] QUERY OK source="settings" db=0.1ms idle=1445.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:29:11.560 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1446.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:29:11.561 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/17/2c/172c21637071ef07fc399347820c144d8dc7dec7713a493d349cdc0629ecd9f2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 01:29:19.994 [info] {"source":"oban","duration":1197,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:29:29.985 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/17/2c/172c21637071ef07fc399347820c144d8dc7dec7713a493d349cdc0629ecd9f2.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: [youtube] 3OK8Z2sl5wA: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 3OK8Z2sl5wA: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies 01:29:30.040 [debug] Running yt-dlp command for action: download_thumbnail 01:29:30.041 [debug] QUERY OK source="settings" db=0.1ms idle=926.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:29:30.041 [debug] QUERY OK source="settings" db=0.0ms idle=927.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:29:30.042 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=927.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 01:29:30.042 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/19395/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/14/91/149172f31bd0b06fef640bac28372a01df1ce752c5ec20583be4145b8ae38db3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 01:29:33.680 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3OK8Z2sl5wA --no-simulate --skip-download --write-thumbnail --convert-thumbnail jpg --output /config/metadata/media_items/19395/thumbnail.%(ext)s --print-to-file after_move:%()j /tmp/pinchflat/data/14/91/149172f31bd0b06fef640bac28372a01df1ce752c5ec20583be4145b8ae38db3.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: [youtube] 3OK8Z2sl5wA: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 3OK8Z2sl5wA: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 01:29:33.681 [debug] QUERY OK db=0.0ms idle=891.8ms begin [] 01:29:33.681 [debug] QUERY OK source="media_items" db=0.5ms UPDATE "media_items" SET "metadata_filepath" = ?, "thumbnail_filepath" = ?, "media_downloaded_at" = ?, "media_filepath" = ?, "subtitle_filepaths" = ?, "updated_at" = ? WHERE "id" = ? ["/downloads/조은미싱/2025-11-14 (판매완료) 시리우스 B8 본봉사절미싱 중고 76만원/(판매완료) 시리우스 B8 본봉사절미싱 중고 76만원 [3OK8Z2sl5wA].info.json", "/downloads/조은미싱/2025-11-14 (판매완료) 시리우스 B8 본봉사절미싱 중고 76만원/(판매완료) 시리우스 B8 본봉사절미싱 중고 76만원 [3OK8Z2sl5wA]-thumb.jpg", ~U[2025-12-24 01:29:29Z], "/downloads/조은미싱/2025-11-14 (판매완료) 시리우스 B8 본봉사절미싱 중고 76만원/(판매완료) 시리우스 B8 본봉사절미싱 중고 76만원 [3OK8Z2sl5wA].mp4", [["en", "/downloads/조은미싱/2025-11-14 (판매완료) 시리우스 B8 본봉사절미싱 중고 76만원/(판매완료) 시리우스 B8 본봉사절미싱 중고 76만원 [3OK8Z2sl5wA].en.srt"]], ~U[2025-12-24 01:29:33Z], 19395] 01:29:33.682 [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/19395/metadata.json.gz", "/config/metadata/media_items/19395/thumbnail.jpg", 19395, ~U[2025-12-24 01:29:33Z], ~U[2025-12-24 01:29:33Z]] 01:29:33.682 [debug] QUERY OK db=0.3ms commit [] 01:29:33.683 [debug] QUERY OK source="media_items" db=0.6ms idle=568.1ms UPDATE "media_items" SET "last_error" = ?, "updated_at" = ? WHERE "id" = ? [nil, ~U[2025-12-24 01:29:33Z], 19395] 01:29:33.684 [debug] QUERY OK source="media_items" db=0.5ms idle=569.0ms UPDATE "media_items" SET "media_size_bytes" = ?, "updated_at" = ? WHERE "id" = ? [141287839, ~U[2025-12-24 01:29:33Z], 19395] 01:29:33.684 [info] User scripts lifecyle file either not present or is empty. Skipping. 01:29:33.685 [info] {"args":{"id":19395},"id":7414,"meta":{},"state":"success","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":24938846,"event":"job:stop","queue_time":804247,"attempt":5,"tags":["media_item","media_fetching","show_in_dashboard"]} 01:29:49.997 [info] {"source":"oban","duration":2464,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:30:00.132 [info] {"source":"oban","duration":719,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:30:19.999 [info] {"source":"oban","duration":916,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:30:50.001 [info] {"source":"oban","duration":1508,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:31:00.133 [info] {"source":"oban","duration":213,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:31:20.003 [info] {"source":"oban","duration":739,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:31:50.005 [info] {"source":"oban","duration":1880,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:32:00.134 [info] {"source":"oban","duration":276,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:32:20.007 [info] {"source":"oban","duration":1458,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:32:50.009 [info] {"source":"oban","duration":1389,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:33:00.135 [info] {"source":"oban","duration":439,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:33:20.011 [info] {"source":"oban","duration":883,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:33:50.013 [info] {"source":"oban","duration":1286,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:34:00.137 [info] {"source":"oban","duration":523,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:34:20.015 [info] {"source":"oban","duration":1645,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:34:50.017 [info] {"source":"oban","duration":905,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:35:00.139 [info] {"source":"oban","duration":649,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:35:20.019 [info] {"source":"oban","duration":1405,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:35:50.021 [info] {"source":"oban","duration":1262,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:36:00.140 [info] {"source":"oban","duration":396,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:36:20.023 [info] {"source":"oban","duration":1248,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:36:50.025 [info] {"source":"oban","duration":1265,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:37:00.142 [info] {"source":"oban","duration":504,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:37:20.027 [info] {"source":"oban","duration":1481,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:37:50.029 [info] {"source":"oban","duration":1095,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:38:00.143 [info] {"source":"oban","duration":474,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:38:20.031 [info] {"source":"oban","duration":1211,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:38:50.034 [info] {"source":"oban","duration":1927,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:39:00.145 [info] {"source":"oban","duration":429,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:39:20.036 [info] {"source":"oban","duration":1446,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:39:50.038 [info] {"source":"oban","duration":1425,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:40:00.147 [info] {"source":"oban","duration":407,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:40:20.040 [info] {"source":"oban","duration":1038,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:40:50.042 [info] {"source":"oban","duration":1586,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:41:00.148 [info] {"source":"oban","duration":380,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:41:20.045 [info] {"source":"oban","duration":1695,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:41:50.046 [info] {"source":"oban","duration":1303,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:42:00.149 [info] {"source":"oban","duration":309,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:42:20.048 [info] {"source":"oban","duration":1293,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:42:50.050 [info] {"source":"oban","duration":872,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:43:00.150 [info] {"source":"oban","duration":328,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:43:20.052 [info] {"source":"oban","duration":1222,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:43:50.054 [info] {"source":"oban","duration":1144,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:44:00.151 [info] {"source":"oban","duration":274,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:44:20.056 [info] {"source":"oban","duration":1297,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:44:50.058 [info] {"source":"oban","duration":1116,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:45:00.153 [info] {"source":"oban","duration":1098,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:45:20.060 [info] {"source":"oban","duration":1018,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:45:50.062 [info] {"source":"oban","duration":1246,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:46:00.154 [info] {"source":"oban","duration":298,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:46:20.064 [info] {"source":"oban","duration":1056,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:46:50.066 [info] {"source":"oban","duration":1000,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:47:00.155 [info] {"source":"oban","duration":298,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:47:20.068 [info] {"source":"oban","duration":1168,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:47:50.071 [info] {"source":"oban","duration":2012,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:48:00.156 [info] {"source":"oban","duration":368,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:48:20.073 [info] {"source":"oban","duration":890,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:48:50.075 [info] {"source":"oban","duration":906,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:49:00.157 [info] {"source":"oban","duration":511,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:49:20.077 [info] {"source":"oban","duration":1411,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:49:50.079 [info] {"source":"oban","duration":1511,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:50:00.159 [info] {"source":"oban","duration":651,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:50:20.082 [info] {"source":"oban","duration":1666,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:50:50.084 [info] {"source":"oban","duration":1526,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:51:00.161 [info] {"source":"oban","duration":518,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:51:20.086 [info] {"source":"oban","duration":1311,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:51:50.089 [info] {"source":"oban","duration":1536,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:52:00.162 [info] {"source":"oban","duration":510,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:52:20.091 [info] {"source":"oban","duration":1121,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:52:50.093 [info] {"source":"oban","duration":1089,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:53:00.164 [info] {"source":"oban","duration":542,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:53:20.096 [info] {"source":"oban","duration":1242,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:53:50.098 [info] {"source":"oban","duration":1306,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:54:00.166 [info] {"source":"oban","duration":716,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:54:20.100 [info] {"source":"oban","duration":952,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:54:50.102 [info] {"source":"oban","duration":1625,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:55:00.167 [info] {"source":"oban","duration":385,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:55:20.104 [info] {"source":"oban","duration":1119,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:55:50.106 [info] {"source":"oban","duration":1410,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:56:00.169 [info] {"source":"oban","duration":704,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:56:20.108 [info] {"source":"oban","duration":1140,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:56:50.110 [info] {"source":"oban","duration":914,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:57:00.171 [info] {"source":"oban","duration":486,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:57:20.112 [info] {"source":"oban","duration":954,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:57:50.114 [info] {"source":"oban","duration":881,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:58:00.172 [info] {"source":"oban","duration":334,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:58:20.116 [info] {"source":"oban","duration":1170,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:58:50.118 [info] {"source":"oban","duration":1255,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:59:00.174 [info] {"source":"oban","duration":472,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 01:59:20.120 [info] {"source":"oban","duration":927,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 01:59:50.122 [info] {"source":"oban","duration":1297,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:00:00.177 [info] {"source":"oban","duration":2180,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[7416]} 02:00:00.184 [info] {"args":{},"id":7416,"meta":{"cron":true,"cron_expr":"0 2 * * *","cron_tz":"Etc/UTC"},"system_time":1766541600184738644,"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.198 [debug] QUERY OK source="media_items" db=13.1ms 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 INNER JOIN "sources" AS s1 ON s1."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.198 [info] Redownloading 0 media items 02:00:00.199 [info] {"args":{},"id":7416,"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":13789,"event":"job:stop","queue_time":183395,"attempt":1,"tags":["media_item","media_fetching","show_in_dashboard"]} 02:00:20.124 [info] {"source":"oban","duration":1406,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:00:50.127 [info] {"source":"oban","duration":1969,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:01:00.178 [info] {"source":"oban","duration":258,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:01:20.129 [info] {"source":"oban","duration":1145,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:01:31.793 [info] {"args":{"id":23904},"id":7407,"meta":{},"system_time":1766541691793013739,"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"]} 02:01:31.793 [debug] QUERY OK source="media_items" db=0.2ms idle=1675.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" = ?) [23904] 02:01:31.793 [info] User scripts lifecyle file either not present or is empty. Skipping. 02:01:31.794 [debug] QUERY OK source="sources" db=0.2ms idle=1676.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 02:01:31.794 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1010.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:01:31.795 [debug] QUERY OK source="media_items" db=0.2ms 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 [23904] 02:01:31.812 [debug] QUERY OK source="media_metadata" db=0.1ms idle=19.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" = ?) [23904] 02:01:31.812 [debug] QUERY OK source="media_profiles" db=0.1ms idle=19.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:01:31.813 [debug] QUERY OK source="settings" db=0.1ms idle=19.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:01:31.813 [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:01:31.813 [debug] Running yt-dlp command for action: get_downloadable_status 02:01:31.814 [debug] QUERY OK source="settings" db=0.0ms idle=18.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:01:31.814 [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:01:31.814 [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:01:31.814 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c0/9c/c09c0a511394bcf84ad210477e62c8f7781601a9ded9c8ffd048b1014a3fe5b8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:01:34.901 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c0/9c/c09c0a511394bcf84ad210477e62c8f7781601a9ded9c8ffd048b1014a3fe5b8.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: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 02:01:34.902 [debug] Running yt-dlp command for action: download 02:01:34.902 [debug] QUERY OK source="settings" db=0.3ms idle=1784.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:01:34.903 [debug] QUERY OK source="settings" db=0.1ms idle=1785.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:01:34.903 [debug] QUERY OK source="settings" db=0.3ms idle=1785.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 02:01:34.903 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/1a/0f/1a0fab93b610f5f32a4c9a617ccb1e4522cb994351b92bbb4e135c1e2ce8b7b0.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 02:01:38.487 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/1a/0f/1a0fab93b610f5f32a4c9a617ccb1e4522cb994351b92bbb4e135c1e2ce8b7b0.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 WARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 02:01:38.488 [error] yt-dlp download error for media item #23904: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 02:01:38.489 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23904},"id":7407,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6695264,"event":"job:exception","queue_time":358092,"attempt":14,"tags":["media_item","media_fetching","show_in_dashboard"]} 02:01:50.131 [info] {"source":"oban","duration":1014,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:02:00.180 [info] {"source":"oban","duration":1263,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:02:20.133 [info] {"source":"oban","duration":706,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:02:50.135 [info] {"source":"oban","duration":1352,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:03:00.182 [info] {"source":"oban","duration":712,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:03:20.137 [info] {"source":"oban","duration":1348,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:03:50.139 [info] {"source":"oban","duration":1315,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:04:00.184 [info] {"source":"oban","duration":564,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:04:20.141 [info] {"source":"oban","duration":726,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:04:50.143 [info] {"source":"oban","duration":1227,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:05:00.186 [info] {"source":"oban","duration":735,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:05:20.145 [info] {"source":"oban","duration":1449,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:05:50.147 [info] {"source":"oban","duration":1292,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:06:00.188 [info] {"source":"oban","duration":584,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:06:20.149 [info] {"source":"oban","duration":1191,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:06:50.151 [info] {"source":"oban","duration":1554,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:07:00.190 [info] {"source":"oban","duration":634,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:07:20.153 [info] {"source":"oban","duration":1263,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:07:50.155 [info] {"source":"oban","duration":1278,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:08:00.192 [info] {"source":"oban","duration":349,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:08:20.157 [info] {"source":"oban","duration":983,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:08:50.159 [info] {"source":"oban","duration":1324,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:09:00.193 [info] {"source":"oban","duration":331,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:09:20.162 [info] {"source":"oban","duration":1298,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:09:50.164 [info] {"source":"oban","duration":971,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:10:00.194 [info] {"source":"oban","duration":516,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:10:20.166 [info] {"source":"oban","duration":1211,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:10:50.168 [info] {"source":"oban","duration":1099,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:11:00.196 [info] {"source":"oban","duration":311,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:11:20.170 [info] {"source":"oban","duration":1185,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:11:50.172 [info] {"source":"oban","duration":1556,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:12:00.198 [info] {"source":"oban","duration":743,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:12:20.174 [info] {"source":"oban","duration":1003,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:12:50.176 [info] {"source":"oban","duration":1253,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:13:00.200 [info] {"source":"oban","duration":1108,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:13:20.178 [info] {"source":"oban","duration":933,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:13:50.181 [info] {"source":"oban","duration":1737,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:14:00.202 [info] {"source":"oban","duration":911,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:14:20.183 [info] {"source":"oban","duration":850,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:14:50.185 [info] {"source":"oban","duration":1371,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:15:00.204 [info] {"source":"oban","duration":522,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:15:20.187 [info] {"source":"oban","duration":1259,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:15:50.189 [info] {"source":"oban","duration":1063,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:16:00.205 [info] {"source":"oban","duration":574,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:16:20.191 [info] {"source":"oban","duration":1004,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:16:50.193 [info] {"source":"oban","duration":1091,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:17:00.208 [info] {"source":"oban","duration":623,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:17:20.195 [info] {"source":"oban","duration":1090,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:17:50.197 [info] {"source":"oban","duration":1316,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:18:00.210 [info] {"source":"oban","duration":717,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:18:20.199 [info] {"source":"oban","duration":1310,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:18:50.201 [info] {"source":"oban","duration":1359,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:19:00.212 [info] {"source":"oban","duration":527,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:19:20.203 [info] {"source":"oban","duration":1175,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:19:50.205 [info] {"source":"oban","duration":1328,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:20:00.214 [info] {"source":"oban","duration":233,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:20:20.207 [info] {"source":"oban","duration":806,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:20:50.209 [info] {"source":"oban","duration":1399,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:21:00.215 [info] {"source":"oban","duration":424,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:21:20.211 [info] {"source":"oban","duration":805,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:21:50.213 [info] {"source":"oban","duration":1275,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:22:00.216 [info] {"source":"oban","duration":433,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:22:20.215 [info] {"source":"oban","duration":861,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:22:50.217 [info] {"source":"oban","duration":1088,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:23:00.217 [info] {"source":"oban","duration":327,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:23:20.219 [info] {"source":"oban","duration":919,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:23:50.221 [info] {"source":"oban","duration":1274,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:24:00.219 [info] {"source":"oban","duration":652,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:24:20.223 [info] {"source":"oban","duration":1062,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:24:50.225 [info] {"source":"oban","duration":1146,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:25:00.221 [info] {"source":"oban","duration":877,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:25:20.227 [info] {"source":"oban","duration":955,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:25:50.229 [info] {"source":"oban","duration":1364,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:26:00.223 [info] {"source":"oban","duration":1076,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:26:20.231 [info] {"source":"oban","duration":758,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:26:50.233 [info] {"source":"oban","duration":770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:27:00.224 [info] {"source":"oban","duration":314,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:27:20.235 [info] {"source":"oban","duration":997,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:27:50.237 [info] {"source":"oban","duration":1430,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:28:00.226 [info] {"source":"oban","duration":605,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:28:20.239 [info] {"source":"oban","duration":885,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:28:50.240 [info] {"source":"oban","duration":647,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:29:00.227 [info] {"source":"oban","duration":441,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:29:20.242 [info] {"source":"oban","duration":1053,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:29:50.245 [info] {"source":"oban","duration":1777,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:30:00.229 [info] {"source":"oban","duration":913,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:30:20.248 [info] {"source":"oban","duration":1794,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:30:50.250 [info] {"source":"oban","duration":841,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:31:00.231 [info] {"source":"oban","duration":737,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:31:20.252 [info] {"source":"oban","duration":1056,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:31:50.254 [info] {"source":"oban","duration":1578,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:32:00.232 [info] {"source":"oban","duration":661,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:32:20.256 [info] {"source":"oban","duration":880,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:32:50.258 [info] {"source":"oban","duration":1050,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:33:00.233 [info] {"source":"oban","duration":242,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:33:20.260 [info] {"source":"oban","duration":1256,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:33:50.262 [info] {"source":"oban","duration":1409,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:34:00.234 [info] {"source":"oban","duration":539,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:34:20.264 [info] {"source":"oban","duration":798,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:34:50.266 [info] {"source":"oban","duration":1123,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:35:00.236 [info] {"source":"oban","duration":219,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:35:20.268 [info] {"source":"oban","duration":1171,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:35:50.270 [info] {"source":"oban","duration":1113,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:36:00.238 [info] {"source":"oban","duration":514,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:36:20.272 [info] {"source":"oban","duration":758,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:36:50.275 [info] {"source":"oban","duration":1345,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:37:00.239 [info] {"source":"oban","duration":517,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:37:20.277 [info] {"source":"oban","duration":746,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:37:50.280 [info] {"source":"oban","duration":1622,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:38:00.240 [info] {"source":"oban","duration":355,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:38:20.281 [info] {"source":"oban","duration":1000,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:38:50.284 [info] {"source":"oban","duration":1115,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:39:00.242 [info] {"source":"oban","duration":447,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:39:20.286 [info] {"source":"oban","duration":1081,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:39:50.288 [info] {"source":"oban","duration":1322,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:40:00.243 [info] {"source":"oban","duration":384,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:40:20.290 [info] {"source":"oban","duration":1443,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:40:50.292 [info] {"source":"oban","duration":1521,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:41:00.244 [info] {"source":"oban","duration":376,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:41:20.294 [info] {"source":"oban","duration":878,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:41:50.296 [info] {"source":"oban","duration":987,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:42:00.246 [info] {"source":"oban","duration":449,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:42:20.299 [info] {"source":"oban","duration":1197,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:42:50.300 [info] {"source":"oban","duration":1220,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:43:00.247 [info] {"source":"oban","duration":223,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:43:20.303 [info] {"source":"oban","duration":1254,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:43:50.306 [info] {"source":"oban","duration":1390,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:44:00.248 [info] {"source":"oban","duration":360,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:44:20.307 [info] {"source":"oban","duration":644,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:44:50.309 [info] {"source":"oban","duration":1581,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:45:00.249 [info] {"source":"oban","duration":282,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:45:20.311 [info] {"source":"oban","duration":1133,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:45:50.313 [info] {"source":"oban","duration":1083,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:46:00.251 [info] {"source":"oban","duration":639,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:46:20.315 [info] {"source":"oban","duration":945,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:46:50.317 [info] {"source":"oban","duration":1276,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:47:00.253 [info] {"source":"oban","duration":581,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:47:20.319 [info] {"source":"oban","duration":1351,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:47:50.321 [info] {"source":"oban","duration":844,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:48:00.254 [info] {"source":"oban","duration":318,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:48:20.323 [info] {"source":"oban","duration":1190,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:48:50.326 [info] {"source":"oban","duration":1749,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:49:00.255 [info] {"source":"oban","duration":281,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:49:20.328 [info] {"source":"oban","duration":1578,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:49:50.330 [info] {"source":"oban","duration":1111,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:50:00.257 [info] {"source":"oban","duration":722,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:50:20.333 [info] {"source":"oban","duration":1667,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:50:50.334 [info] {"source":"oban","duration":1543,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:51:00.258 [info] {"source":"oban","duration":249,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:51:20.336 [info] {"source":"oban","duration":981,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:51:50.338 [info] {"source":"oban","duration":1506,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:52:00.259 [info] {"source":"oban","duration":398,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:52:20.340 [info] {"source":"oban","duration":728,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:52:50.342 [info] {"source":"oban","duration":974,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:53:00.261 [info] {"source":"oban","duration":823,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:53:20.344 [info] {"source":"oban","duration":1174,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:53:50.346 [info] {"source":"oban","duration":1303,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:54:00.263 [info] {"source":"oban","duration":574,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:54:20.348 [info] {"source":"oban","duration":898,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:54:50.350 [info] {"source":"oban","duration":946,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:55:00.265 [info] {"source":"oban","duration":870,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:55:20.352 [info] {"source":"oban","duration":863,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:55:50.354 [info] {"source":"oban","duration":1266,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:56:00.266 [info] {"source":"oban","duration":428,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:56:20.356 [info] {"source":"oban","duration":1600,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:56:50.358 [info] {"source":"oban","duration":1344,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:57:00.267 [info] {"source":"oban","duration":318,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:57:20.360 [info] {"source":"oban","duration":1249,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:57:50.363 [info] {"source":"oban","duration":1767,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:58:00.268 [info] {"source":"oban","duration":305,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:58:20.366 [info] {"source":"oban","duration":1167,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:58:50.367 [info] {"source":"oban","duration":1057,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:59:00.270 [info] {"source":"oban","duration":780,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 02:59:20.369 [info] {"source":"oban","duration":866,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 02:59:50.371 [info] {"source":"oban","duration":1024,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:00:00.271 [info] {"source":"oban","duration":548,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:00:20.373 [info] {"source":"oban","duration":918,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:00:50.374 [info] {"source":"oban","duration":701,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:01:00.272 [info] {"source":"oban","duration":608,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:01:20.376 [info] {"source":"oban","duration":954,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:01:50.378 [info] {"source":"oban","duration":881,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:02:00.273 [info] {"source":"oban","duration":369,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:02:20.380 [info] {"source":"oban","duration":1021,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:02:50.382 [info] {"source":"oban","duration":1488,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:03:00.275 [info] {"source":"oban","duration":229,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:03:20.384 [info] {"source":"oban","duration":1342,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:03:50.386 [info] {"source":"oban","duration":1042,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:04:00.277 [info] {"source":"oban","duration":414,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:04:20.388 [info] {"source":"oban","duration":1304,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:04:50.390 [info] {"source":"oban","duration":1324,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:05:00.279 [info] {"source":"oban","duration":805,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:05:20.392 [info] {"source":"oban","duration":813,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:05:50.394 [info] {"source":"oban","duration":1536,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:06:00.281 [info] {"source":"oban","duration":434,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:06:20.397 [info] {"source":"oban","duration":1935,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:06:50.399 [info] {"source":"oban","duration":836,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:07:00.283 [info] {"source":"oban","duration":986,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:07:20.402 [info] {"source":"oban","duration":1219,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:07:50.404 [info] {"source":"oban","duration":1528,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:08:00.284 [info] {"source":"oban","duration":238,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:08:20.406 [info] {"source":"oban","duration":816,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:08:50.408 [info] {"source":"oban","duration":1511,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:09:00.285 [info] {"source":"oban","duration":421,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:09:20.411 [info] {"source":"oban","duration":1482,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:09:50.413 [info] {"source":"oban","duration":736,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:10:00.287 [info] {"source":"oban","duration":464,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:10:20.414 [info] {"source":"oban","duration":642,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:10:50.416 [info] {"source":"oban","duration":784,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:11:00.289 [info] {"source":"oban","duration":653,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:11:20.418 [info] {"source":"oban","duration":863,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:11:50.420 [info] {"source":"oban","duration":1169,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:12:00.290 [info] {"source":"oban","duration":564,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:12:20.422 [info] {"source":"oban","duration":1133,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:12:50.424 [info] {"source":"oban","duration":1262,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:13:00.291 [info] {"source":"oban","duration":251,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:13:20.426 [info] {"source":"oban","duration":742,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:13:50.427 [info] {"source":"oban","duration":1410,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:14:00.292 [info] {"source":"oban","duration":378,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:14:20.429 [info] {"source":"oban","duration":884,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:14:50.431 [info] {"source":"oban","duration":1330,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:15:00.294 [info] {"source":"oban","duration":796,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:15:20.434 [info] {"source":"oban","duration":1966,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:15:50.436 [info] {"source":"oban","duration":926,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:16:00.295 [info] {"source":"oban","duration":453,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:16:20.438 [info] {"source":"oban","duration":1213,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:16:50.440 [info] {"source":"oban","duration":1132,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:17:00.296 [info] {"source":"oban","duration":635,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:17:20.442 [info] {"source":"oban","duration":1525,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:17:50.444 [info] {"source":"oban","duration":1260,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:18:00.297 [info] {"source":"oban","duration":272,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:18:20.446 [info] {"source":"oban","duration":1586,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:18:50.447 [info] {"source":"oban","duration":586,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:19:00.299 [info] {"source":"oban","duration":874,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:19:20.450 [info] {"source":"oban","duration":1774,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:19:50.452 [info] {"source":"oban","duration":1184,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:20:00.300 [info] {"source":"oban","duration":516,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:20:20.454 [info] {"source":"oban","duration":944,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:20:50.456 [info] {"source":"oban","duration":867,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:21:00.301 [info] {"source":"oban","duration":333,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:21:20.458 [info] {"source":"oban","duration":1045,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:21:50.460 [info] {"source":"oban","duration":1580,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:22:00.303 [info] {"source":"oban","duration":1219,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:22:20.462 [info] {"source":"oban","duration":750,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:22:50.464 [info] {"source":"oban","duration":1421,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:23:00.305 [info] {"source":"oban","duration":728,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:23:20.466 [info] {"source":"oban","duration":1610,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:23:50.468 [info] {"source":"oban","duration":782,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:24:00.306 [info] {"source":"oban","duration":433,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:24:20.470 [info] {"source":"oban","duration":1072,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:24:50.473 [info] {"source":"oban","duration":2099,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:25:00.308 [info] {"source":"oban","duration":476,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:25:20.475 [info] {"source":"oban","duration":1075,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:25:50.477 [info] {"source":"oban","duration":738,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:26:00.310 [info] {"source":"oban","duration":443,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:26:20.478 [info] {"source":"oban","duration":1525,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:26:50.480 [info] {"source":"oban","duration":1329,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:27:00.312 [info] {"source":"oban","duration":309,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:27:20.481 [info] {"source":"oban","duration":539,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:27:50.483 [info] {"source":"oban","duration":1542,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:28:00.314 [info] {"source":"oban","duration":622,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:28:20.485 [info] {"source":"oban","duration":1225,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:28:50.488 [info] {"source":"oban","duration":1740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:29:00.316 [info] {"source":"oban","duration":961,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:29:20.490 [info] {"source":"oban","duration":1114,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:29:50.492 [info] {"source":"oban","duration":1499,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:30:00.318 [info] {"source":"oban","duration":495,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:30:20.494 [info] {"source":"oban","duration":1115,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:30:50.496 [info] {"source":"oban","duration":1342,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:31:00.320 [info] {"source":"oban","duration":987,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:31:20.498 [info] {"source":"oban","duration":749,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:31:50.499 [info] {"source":"oban","duration":1308,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:32:00.322 [info] {"source":"oban","duration":569,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:32:20.501 [info] {"source":"oban","duration":797,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:32:50.503 [info] {"source":"oban","duration":1545,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:33:00.323 [info] {"source":"oban","duration":487,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:33:20.505 [info] {"source":"oban","duration":714,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:33:50.507 [info] {"source":"oban","duration":1355,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:34:00.324 [info] {"source":"oban","duration":426,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:34:20.508 [info] {"source":"oban","duration":627,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:34:50.510 [info] {"source":"oban","duration":1166,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:35:00.326 [info] {"source":"oban","duration":606,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:35:20.513 [info] {"source":"oban","duration":1766,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:35:50.515 [info] {"source":"oban","duration":1549,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:36:00.326 [info] {"source":"oban","duration":336,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:36:20.518 [info] {"source":"oban","duration":1460,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:36:50.521 [info] {"source":"oban","duration":1985,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:37:00.327 [info] {"source":"oban","duration":293,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:37:20.524 [info] {"source":"oban","duration":1652,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:37:50.527 [info] {"source":"oban","duration":1753,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:38:00.328 [info] {"source":"oban","duration":318,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:38:20.529 [info] {"source":"oban","duration":1285,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:38:50.531 [info] {"source":"oban","duration":1513,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:39:00.329 [info] {"source":"oban","duration":452,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:39:20.533 [info] {"source":"oban","duration":1225,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:39:50.536 [info] {"source":"oban","duration":1732,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:40:00.331 [info] {"source":"oban","duration":1319,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:40:20.538 [info] {"source":"oban","duration":1609,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:40:50.540 [info] {"source":"oban","duration":1015,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:41:00.332 [info] {"source":"oban","duration":195,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:41:20.542 [info] {"source":"oban","duration":1140,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:41:50.544 [info] {"source":"oban","duration":1400,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:42:00.333 [info] {"source":"oban","duration":332,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:42:20.546 [info] {"source":"oban","duration":1090,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:42:50.548 [info] {"source":"oban","duration":1117,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:43:00.335 [info] {"source":"oban","duration":668,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:43:20.550 [info] {"source":"oban","duration":1028,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:43:50.552 [info] {"source":"oban","duration":838,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:44:00.336 [info] {"source":"oban","duration":342,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:44:20.554 [info] {"source":"oban","duration":1423,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:44:50.556 [info] {"source":"oban","duration":819,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:45:00.338 [info] {"source":"oban","duration":803,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:45:20.558 [info] {"source":"oban","duration":1033,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:45:50.560 [info] {"source":"oban","duration":1296,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:46:00.339 [info] {"source":"oban","duration":330,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:46:20.562 [info] {"source":"oban","duration":1049,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:46:50.564 [info] {"source":"oban","duration":1606,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:47:00.341 [info] {"source":"oban","duration":993,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:47:20.566 [info] {"source":"oban","duration":819,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:47:50.569 [info] {"source":"oban","duration":1591,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:48:00.343 [info] {"source":"oban","duration":512,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:48:20.571 [info] {"source":"oban","duration":1486,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:48:50.573 [info] {"source":"oban","duration":864,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:49:00.345 [info] {"source":"oban","duration":514,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:49:20.575 [info] {"source":"oban","duration":759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:49:50.577 [info] {"source":"oban","duration":836,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:50:00.346 [info] {"source":"oban","duration":326,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:50:20.579 [info] {"source":"oban","duration":871,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:50:50.582 [info] {"source":"oban","duration":1763,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:51:00.348 [info] {"source":"oban","duration":821,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:51:20.584 [info] {"source":"oban","duration":1402,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:51:50.586 [info] {"source":"oban","duration":1078,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:52:00.350 [info] {"source":"oban","duration":1337,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:52:20.588 [info] {"source":"oban","duration":1121,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:52:50.591 [info] {"source":"oban","duration":1806,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:53:00.351 [info] {"source":"oban","duration":352,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:53:20.593 [info] {"source":"oban","duration":825,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:53:50.595 [info] {"source":"oban","duration":1499,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:54:00.353 [info] {"source":"oban","duration":549,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:54:20.597 [info] {"source":"oban","duration":1484,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:54:50.599 [info] {"source":"oban","duration":1028,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:55:00.355 [info] {"source":"oban","duration":644,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:55:20.601 [info] {"source":"oban","duration":766,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:55:50.603 [info] {"source":"oban","duration":1338,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:56:00.357 [info] {"source":"oban","duration":693,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:56:20.605 [info] {"source":"oban","duration":614,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:56:50.607 [info] {"source":"oban","duration":902,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:57:00.358 [info] {"source":"oban","duration":442,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:57:20.609 [info] {"source":"oban","duration":1137,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:57:50.611 [info] {"source":"oban","duration":1313,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:58:00.359 [info] {"source":"oban","duration":360,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:58:20.613 [info] {"source":"oban","duration":1212,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:58:50.615 [info] {"source":"oban","duration":1282,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:59:00.361 [info] {"source":"oban","duration":1045,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 03:59:20.617 [info] {"source":"oban","duration":1488,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 03:59:50.620 [info] {"source":"oban","duration":1889,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:00:00.362 [info] {"source":"oban","duration":267,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:00:20.623 [info] {"source":"oban","duration":1699,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:00:50.626 [info] {"source":"oban","duration":1939,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:01:00.363 [info] {"source":"oban","duration":367,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:01:20.628 [info] {"source":"oban","duration":1080,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:01:50.631 [info] {"source":"oban","duration":1732,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:02:00.365 [info] {"source":"oban","duration":453,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:02:20.633 [info] {"source":"oban","duration":1092,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:02:50.635 [info] {"source":"oban","duration":1113,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:03:00.367 [info] {"source":"oban","duration":637,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:03:20.638 [info] {"source":"oban","duration":1271,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:03:50.640 [info] {"source":"oban","duration":1036,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:04:00.369 [info] {"source":"oban","duration":750,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:04:20.642 [info] {"source":"oban","duration":1529,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:04:50.643 [info] {"source":"oban","duration":658,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:05:00.371 [info] {"source":"oban","duration":395,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:05:20.645 [info] {"source":"oban","duration":861,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:05:50.647 [info] {"source":"oban","duration":1577,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:06:00.372 [info] {"source":"oban","duration":566,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:06:20.649 [info] {"source":"oban","duration":733,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:06:50.651 [info] {"source":"oban","duration":1367,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:07:00.374 [info] {"source":"oban","duration":629,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:07:20.653 [info] {"source":"oban","duration":747,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:07:50.656 [info] {"source":"oban","duration":1751,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:08:00.375 [info] {"source":"oban","duration":304,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:08:20.658 [info] {"source":"oban","duration":1664,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:08:50.660 [info] {"source":"oban","duration":1520,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:09:00.376 [info] {"source":"oban","duration":688,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:09:20.662 [info] {"source":"oban","duration":1188,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:09:50.664 [info] {"source":"oban","duration":1538,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:10:00.378 [info] {"source":"oban","duration":905,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:10:20.666 [info] {"source":"oban","duration":1035,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:10:50.668 [info] {"source":"oban","duration":1241,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:11:00.379 [info] {"source":"oban","duration":302,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:11:20.670 [info] {"source":"oban","duration":940,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:11:50.672 [info] {"source":"oban","duration":1351,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:12:00.380 [info] {"source":"oban","duration":395,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:12:20.675 [info] {"source":"oban","duration":1420,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:12:50.677 [info] {"source":"oban","duration":1435,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:13:00.381 [info] {"source":"oban","duration":268,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:13:20.679 [info] {"source":"oban","duration":1293,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:13:50.680 [info] {"source":"oban","duration":661,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:14:00.383 [info] {"source":"oban","duration":1167,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:14:20.683 [info] {"source":"oban","duration":1813,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:14:50.685 [info] {"source":"oban","duration":828,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:15:00.385 [info] {"source":"oban","duration":567,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:15:20.687 [info] {"source":"oban","duration":1348,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:15:50.689 [info] {"source":"oban","duration":740,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:16:00.386 [info] {"source":"oban","duration":498,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:16:20.690 [info] {"source":"oban","duration":1221,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:16:50.692 [info] {"source":"oban","duration":1198,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:17:00.389 [info] {"source":"oban","duration":494,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:17:20.694 [info] {"source":"oban","duration":803,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:17:50.696 [info] {"source":"oban","duration":1430,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:18:00.391 [info] {"source":"oban","duration":1182,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:18:20.698 [info] {"source":"oban","duration":1204,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:18:50.700 [info] {"source":"oban","duration":1585,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:19:00.393 [info] {"source":"oban","duration":452,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:19:20.702 [info] {"source":"oban","duration":1004,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:19:50.704 [info] {"source":"oban","duration":1457,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:20:00.394 [info] {"source":"oban","duration":492,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:20:20.706 [info] {"source":"oban","duration":1082,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:20:50.709 [info] {"source":"oban","duration":1936,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:21:00.395 [info] {"source":"oban","duration":457,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:21:20.711 [info] {"source":"oban","duration":1366,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:21:50.713 [info] {"source":"oban","duration":1046,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:22:00.396 [info] {"source":"oban","duration":212,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:22:20.715 [info] {"source":"oban","duration":945,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:22:50.717 [info] {"source":"oban","duration":1007,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:23:00.398 [info] {"source":"oban","duration":583,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:23:20.719 [info] {"source":"oban","duration":716,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:23:50.721 [info] {"source":"oban","duration":1153,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:24:00.400 [info] {"source":"oban","duration":667,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:24:20.723 [info] {"source":"oban","duration":938,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:24:50.726 [info] {"source":"oban","duration":1632,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:25:00.401 [info] {"source":"oban","duration":426,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:25:20.727 [info] {"source":"oban","duration":870,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:25:50.730 [info] {"source":"oban","duration":1867,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:26:00.403 [info] {"source":"oban","duration":793,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:26:20.732 [info] {"source":"oban","duration":1055,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:26:50.734 [info] {"source":"oban","duration":1441,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:27:00.404 [info] {"source":"oban","duration":289,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:27:20.736 [info] {"source":"oban","duration":1201,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:27:50.738 [info] {"source":"oban","duration":1361,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:28:00.406 [info] {"source":"oban","duration":404,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:28:20.740 [info] {"source":"oban","duration":747,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:28:50.741 [info] {"source":"oban","duration":1084,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:29:00.408 [info] {"source":"oban","duration":712,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:29:20.743 [info] {"source":"oban","duration":1066,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:29:50.745 [info] {"source":"oban","duration":758,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:30:00.409 [info] {"source":"oban","duration":359,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:30:20.747 [info] {"source":"oban","duration":988,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:30:50.749 [info] {"source":"oban","duration":842,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:31:00.411 [info] {"source":"oban","duration":555,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:31:20.751 [info] {"source":"oban","duration":1185,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:31:50.753 [info] {"source":"oban","duration":1259,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:32:00.412 [info] {"source":"oban","duration":533,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:32:20.755 [info] {"source":"oban","duration":1362,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:32:50.757 [info] {"source":"oban","duration":1264,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:33:00.414 [info] {"source":"oban","duration":677,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:33:20.759 [info] {"source":"oban","duration":1502,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:33:50.761 [info] {"source":"oban","duration":946,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:34:00.416 [info] {"source":"oban","duration":473,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:34:20.763 [info] {"source":"oban","duration":1540,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:34:50.765 [info] {"source":"oban","duration":1351,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:35:00.418 [info] {"source":"oban","duration":1335,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[7417]} 04:35:00.425 [info] {"args":{},"id":7417,"meta":{"cron":true,"cron_expr":"35 4 * * *","cron_tz":"Etc/UTC"},"system_time":1766550900425332918,"max_attempts":20,"queue":"local_data","worker":"Pinchflat.YtDlp.UpdateWorker","source":"oban","event":"job:start","attempt":1,"tags":["local_data"]} 04:35:00.425 [info] Updating yt-dlp 04:35:00.425 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: --update 04:35:01.366 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: --update exited: 0 with: Latest version: stable@2025.12.08 from yt-dlp/yt-dlp yt-dlp is up to date (stable@2025.12.08 from yt-dlp/yt-dlp) 04:35:01.366 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: --version 04:35:01.791 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: --version exited: 0 with: 2025.12.08 04:35:01.792 [debug] QUERY OK source="settings" db=0.6ms idle=1645.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 04:35:01.793 [info] {"args":{},"id":7417,"meta":{"cron":true,"cron_expr":"35 4 * * *","cron_tz":"Etc/UTC"},"state":"success","max_attempts":20,"queue":"local_data","worker":"Pinchflat.YtDlp.UpdateWorker","source":"oban","duration":1367485,"event":"job:stop","queue_time":424279,"attempt":1,"tags":["local_data"]} 04:35:20.767 [info] {"source":"oban","duration":1378,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:35:27.403 [debug] Tzdata polling for update. 04:35:27.491 [debug] Tzdata polling shows the loaded tz database is up to date. 04:35:50.770 [info] {"source":"oban","duration":1785,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:36:00.419 [info] {"source":"oban","duration":602,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:36:20.773 [info] {"source":"oban","duration":1718,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:36:50.775 [info] {"source":"oban","duration":1325,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:37:00.420 [info] {"source":"oban","duration":362,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:37:20.778 [info] {"source":"oban","duration":1279,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:37:50.780 [info] {"source":"oban","duration":1499,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:38:00.422 [info] {"source":"oban","duration":624,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:38:20.783 [info] {"source":"oban","duration":1773,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:38:50.784 [info] {"source":"oban","duration":1198,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:39:00.424 [info] {"source":"oban","duration":712,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:39:20.786 [info] {"source":"oban","duration":894,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:39:50.787 [info] {"source":"oban","duration":732,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:40:00.425 [info] {"source":"oban","duration":469,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:40:20.789 [info] {"source":"oban","duration":1128,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:40:50.792 [info] {"source":"oban","duration":1805,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:41:00.427 [info] {"source":"oban","duration":609,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:41:20.794 [info] {"source":"oban","duration":1096,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:41:50.796 [info] {"source":"oban","duration":1102,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:42:00.428 [info] {"source":"oban","duration":345,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:42:20.798 [info] {"source":"oban","duration":1235,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:42:50.800 [info] {"source":"oban","duration":990,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:43:00.430 [info] {"source":"oban","duration":990,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:43:20.803 [info] {"source":"oban","duration":1131,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:43:50.805 [info] {"source":"oban","duration":1132,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:44:00.431 [info] {"source":"oban","duration":468,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:44:20.807 [info] {"source":"oban","duration":868,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:44:50.809 [info] {"source":"oban","duration":814,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:45:00.433 [info] {"source":"oban","duration":572,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:45:20.811 [info] {"source":"oban","duration":875,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:45:50.813 [info] {"source":"oban","duration":1572,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:46:00.435 [info] {"source":"oban","duration":344,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:46:20.815 [info] {"source":"oban","duration":1569,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:46:50.817 [info] {"source":"oban","duration":1048,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:47:00.437 [info] {"source":"oban","duration":630,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:47:20.820 [info] {"source":"oban","duration":1770,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:47:50.822 [info] {"source":"oban","duration":746,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:48:00.439 [info] {"source":"oban","duration":848,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:48:20.824 [info] {"source":"oban","duration":1294,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:48:50.826 [info] {"source":"oban","duration":665,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:49:00.441 [info] {"source":"oban","duration":641,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:49:20.828 [info] {"source":"oban","duration":702,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:49:50.830 [info] {"source":"oban","duration":1344,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:50:00.443 [info] {"source":"oban","duration":428,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:50:20.832 [info] {"source":"oban","duration":837,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:50:50.834 [info] {"source":"oban","duration":1449,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:51:00.445 [info] {"source":"oban","duration":958,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:51:20.836 [info] {"source":"oban","duration":1534,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:51:50.838 [info] {"source":"oban","duration":1262,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:52:00.447 [info] {"source":"oban","duration":812,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:52:20.840 [info] {"source":"oban","duration":1081,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:52:50.842 [info] {"source":"oban","duration":795,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:53:00.449 [info] {"source":"oban","duration":402,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:53:20.844 [info] {"source":"oban","duration":703,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:53:50.847 [info] {"source":"oban","duration":1788,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:54:00.451 [info] {"source":"oban","duration":843,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:54:20.849 [info] {"source":"oban","duration":1227,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:54:50.851 [info] {"source":"oban","duration":1281,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:55:00.452 [info] {"source":"oban","duration":197,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:55:20.854 [info] {"source":"oban","duration":2525,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:55:50.856 [info] {"source":"oban","duration":875,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:56:00.454 [info] {"source":"oban","duration":728,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:56:20.858 [info] {"source":"oban","duration":677,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:56:50.859 [info] {"source":"oban","duration":1633,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:57:00.456 [info] {"source":"oban","duration":1166,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:57:20.860 [info] {"source":"oban","duration":728,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:57:50.862 [info] {"source":"oban","duration":945,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:58:00.458 [info] {"source":"oban","duration":648,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:58:20.864 [info] {"source":"oban","duration":1328,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:58:50.866 [info] {"source":"oban","duration":1338,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:59:00.460 [info] {"source":"oban","duration":958,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 04:59:20.868 [info] {"source":"oban","duration":1100,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 04:59:50.870 [info] {"source":"oban","duration":771,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:00:00.462 [info] {"source":"oban","duration":716,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:00:20.872 [info] {"source":"oban","duration":1405,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:00:50.874 [info] {"source":"oban","duration":898,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:01:00.463 [info] {"source":"oban","duration":341,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:01:20.876 [info] {"source":"oban","duration":844,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:01:50.878 [info] {"source":"oban","duration":1096,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:02:00.465 [info] {"source":"oban","duration":1061,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:02:20.881 [info] {"source":"oban","duration":1698,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:02:50.884 [info] {"source":"oban","duration":1875,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:03:00.467 [info] {"source":"oban","duration":221,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:03:20.886 [info] {"source":"oban","duration":900,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:03:50.888 [info] {"source":"oban","duration":1518,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:04:00.467 [info] {"source":"oban","duration":421,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:04:20.890 [info] {"source":"oban","duration":1503,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:04:50.893 [info] {"source":"oban","duration":2001,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:05:00.469 [info] {"source":"oban","duration":1094,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:05:20.895 [info] {"source":"oban","duration":1406,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:05:50.897 [info] {"source":"oban","duration":1315,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:06:00.471 [info] {"source":"oban","duration":1088,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:06:20.899 [info] {"source":"oban","duration":1219,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:06:50.901 [info] {"source":"oban","duration":839,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:07:00.472 [info] {"source":"oban","duration":413,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:07:20.903 [info] {"source":"oban","duration":1570,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:07:50.905 [info] {"source":"oban","duration":1546,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:08:00.473 [info] {"source":"oban","duration":293,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:08:20.911 [info] {"source":"oban","duration":4994,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:08:50.913 [info] {"source":"oban","duration":1583,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:09:00.475 [info] {"source":"oban","duration":439,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:09:20.915 [info] {"source":"oban","duration":1245,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:09:50.917 [info] {"source":"oban","duration":1542,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:10:00.476 [info] {"source":"oban","duration":598,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:10:20.919 [info] {"source":"oban","duration":1047,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:10:50.921 [info] {"source":"oban","duration":899,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:11:00.478 [info] {"source":"oban","duration":372,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:11:20.924 [info] {"source":"oban","duration":1133,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:11:50.926 [info] {"source":"oban","duration":1579,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:12:00.480 [info] {"source":"oban","duration":278,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:12:20.928 [info] {"source":"oban","duration":1312,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:12:50.931 [info] {"source":"oban","duration":1842,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:13:00.482 [info] {"source":"oban","duration":810,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:13:20.934 [info] {"source":"oban","duration":1766,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:13:50.936 [info] {"source":"oban","duration":945,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:14:00.484 [info] {"source":"oban","duration":449,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:14:20.938 [info] {"source":"oban","duration":1083,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:14:50.940 [info] {"source":"oban","duration":1197,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:15:00.484 [info] {"source":"oban","duration":543,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:15:20.942 [info] {"source":"oban","duration":1646,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:15:50.945 [info] {"source":"oban","duration":1892,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:16:00.486 [info] {"source":"oban","duration":553,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:16:20.947 [info] {"source":"oban","duration":1158,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:16:50.949 [info] {"source":"oban","duration":858,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:17:00.487 [info] {"source":"oban","duration":359,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:17:20.951 [info] {"source":"oban","duration":1051,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:17:50.953 [info] {"source":"oban","duration":1399,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:18:00.488 [info] {"source":"oban","duration":253,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:18:20.955 [info] {"source":"oban","duration":1446,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:18:50.957 [info] {"source":"oban","duration":948,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:19:00.489 [info] {"source":"oban","duration":241,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:19:20.959 [info] {"source":"oban","duration":1284,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:19:50.961 [info] {"source":"oban","duration":1528,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:20:00.491 [info] {"source":"oban","duration":430,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:20:20.963 [info] {"source":"oban","duration":931,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:20:50.965 [info] {"source":"oban","duration":1584,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:21:00.492 [info] {"source":"oban","duration":445,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:21:20.968 [info] {"source":"oban","duration":1017,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:21:50.970 [info] {"source":"oban","duration":1520,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:22:00.494 [info] {"source":"oban","duration":526,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:22:20.972 [info] {"source":"oban","duration":1202,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:22:50.974 [info] {"source":"oban","duration":862,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:23:00.495 [info] {"source":"oban","duration":451,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:23:20.976 [info] {"source":"oban","duration":1233,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:23:50.978 [info] {"source":"oban","duration":1395,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:24:00.497 [info] {"source":"oban","duration":757,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:24:20.980 [info] {"source":"oban","duration":936,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:24:50.982 [info] {"source":"oban","duration":1513,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:25:00.499 [info] {"source":"oban","duration":1248,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:25:20.984 [info] {"source":"oban","duration":1558,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:25:50.986 [info] {"source":"oban","duration":1341,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:26:00.500 [info] {"source":"oban","duration":438,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:26:20.988 [info] {"source":"oban","duration":989,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:26:50.990 [info] {"source":"oban","duration":1635,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:27:00.501 [info] {"source":"oban","duration":495,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:27:20.992 [info] {"source":"oban","duration":1346,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:27:50.994 [info] {"source":"oban","duration":1280,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:28:00.503 [info] {"source":"oban","duration":655,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:28:20.996 [info] {"source":"oban","duration":1415,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:28:50.998 [info] {"source":"oban","duration":1488,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:29:00.505 [info] {"source":"oban","duration":904,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:29:21.001 [info] {"source":"oban","duration":1323,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:29:51.003 [info] {"source":"oban","duration":1034,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:30:00.507 [info] {"source":"oban","duration":727,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:30:21.005 [info] {"source":"oban","duration":1079,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:30:51.007 [info] {"source":"oban","duration":1033,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:31:00.508 [info] {"source":"oban","duration":327,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:31:21.009 [info] {"source":"oban","duration":657,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:31:51.010 [info] {"source":"oban","duration":620,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:32:00.510 [info] {"source":"oban","duration":368,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:32:21.013 [info] {"source":"oban","duration":1277,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:32:51.015 [info] {"source":"oban","duration":987,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:33:00.511 [info] {"source":"oban","duration":435,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:33:21.017 [info] {"source":"oban","duration":1545,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:33:51.019 [info] {"source":"oban","duration":1103,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:34:00.513 [info] {"source":"oban","duration":699,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:34:21.021 [info] {"source":"oban","duration":1413,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:34:51.023 [info] {"source":"oban","duration":1122,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:35:00.514 [info] {"source":"oban","duration":213,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:35:21.026 [info] {"source":"oban","duration":1343,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:35:51.027 [info] {"source":"oban","duration":871,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:36:00.515 [info] {"source":"oban","duration":237,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:36:21.029 [info] {"source":"oban","duration":1295,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:36:51.031 [info] {"source":"oban","duration":1364,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:37:00.517 [info] {"source":"oban","duration":955,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:37:21.033 [info] {"source":"oban","duration":1560,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:37:51.035 [info] {"source":"oban","duration":897,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:38:00.519 [info] {"source":"oban","duration":593,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:38:21.038 [info] {"source":"oban","duration":1249,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:38:51.039 [info] {"source":"oban","duration":1139,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:39:00.521 [info] {"source":"oban","duration":494,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:39:21.041 [info] {"source":"oban","duration":1383,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:39:51.043 [info] {"source":"oban","duration":1493,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:40:00.523 [info] {"source":"oban","duration":458,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:40:21.045 [info] {"source":"oban","duration":873,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:40:51.047 [info] {"source":"oban","duration":1533,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:41:00.525 [info] {"source":"oban","duration":834,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:41:21.049 [info] {"source":"oban","duration":919,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:41:51.052 [info] {"source":"oban","duration":1809,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:42:00.526 [info] {"source":"oban","duration":454,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:42:21.054 [info] {"source":"oban","duration":1189,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:42:51.056 [info] {"source":"oban","duration":1298,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:43:00.528 [info] {"source":"oban","duration":439,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:43:21.058 [info] {"source":"oban","duration":1277,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:43:51.060 [info] {"source":"oban","duration":918,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:44:00.529 [info] {"source":"oban","duration":357,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:44:21.063 [info] {"source":"oban","duration":1687,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:44:51.065 [info] {"source":"oban","duration":1560,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:45:00.530 [info] {"source":"oban","duration":621,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:45:21.067 [info] {"source":"oban","duration":1377,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:45:51.069 [info] {"source":"oban","duration":1325,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:46:00.533 [info] {"source":"oban","duration":483,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:46:21.072 [info] {"source":"oban","duration":1405,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:46:51.073 [info] {"source":"oban","duration":1424,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:47:00.535 [info] {"source":"oban","duration":879,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:47:21.075 [info] {"source":"oban","duration":1365,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:47:51.077 [info] {"source":"oban","duration":1388,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:48:00.537 [info] {"source":"oban","duration":686,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:48:21.079 [info] {"source":"oban","duration":1229,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:48:51.082 [info] {"source":"oban","duration":1445,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:49:00.539 [info] {"source":"oban","duration":542,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:49:21.084 [info] {"source":"oban","duration":1376,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:49:51.086 [info] {"source":"oban","duration":1528,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:50:00.540 [info] {"source":"oban","duration":415,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:50:21.089 [info] {"source":"oban","duration":1437,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:50:51.091 [info] {"source":"oban","duration":1545,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:51:00.542 [info] {"source":"oban","duration":948,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:51:21.093 [info] {"source":"oban","duration":1305,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:51:51.095 [info] {"source":"oban","duration":1370,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:52:00.543 [info] {"source":"oban","duration":631,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:52:21.097 [info] {"source":"oban","duration":1232,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:52:51.099 [info] {"source":"oban","duration":1048,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:53:00.545 [info] {"source":"oban","duration":596,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:53:21.101 [info] {"source":"oban","duration":1070,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:53:51.103 [info] {"source":"oban","duration":1569,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:54:00.546 [info] {"source":"oban","duration":532,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:54:21.105 [info] {"source":"oban","duration":1339,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:54:51.107 [info] {"source":"oban","duration":1229,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:55:00.548 [info] {"source":"oban","duration":704,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:55:21.109 [info] {"source":"oban","duration":1300,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:55:51.111 [info] {"source":"oban","duration":1462,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:56:00.550 [info] {"source":"oban","duration":397,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:56:21.113 [info] {"source":"oban","duration":787,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:56:51.115 [info] {"source":"oban","duration":917,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:57:00.550 [info] {"source":"oban","duration":443,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:57:21.117 [info] {"source":"oban","duration":1436,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:57:51.120 [info] {"source":"oban","duration":1889,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:58:00.552 [info] {"source":"oban","duration":262,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:58:21.122 [info] {"source":"oban","duration":1351,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:58:51.124 [info] {"source":"oban","duration":886,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:59:00.553 [info] {"source":"oban","duration":434,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 05:59:21.126 [info] {"source":"oban","duration":857,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 05:59:51.128 [info] {"source":"oban","duration":853,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:00:00.554 [info] {"source":"oban","duration":435,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:00:21.130 [info] {"source":"oban","duration":999,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:00:51.132 [info] {"source":"oban","duration":873,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:01:00.555 [info] {"source":"oban","duration":456,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:01:21.134 [info] {"source":"oban","duration":814,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:01:51.136 [info] {"source":"oban","duration":812,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:02:00.557 [info] {"source":"oban","duration":626,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:02:21.138 [info] {"source":"oban","duration":1463,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:02:51.140 [info] {"source":"oban","duration":1118,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:03:00.559 [info] {"source":"oban","duration":1063,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:03:21.142 [info] {"source":"oban","duration":1332,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:03:51.144 [info] {"source":"oban","duration":1007,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:04:00.561 [info] {"source":"oban","duration":633,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:04:21.146 [info] {"source":"oban","duration":1051,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:04:51.148 [info] {"source":"oban","duration":1081,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:05:00.562 [info] {"source":"oban","duration":262,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:05:21.149 [info] {"source":"oban","duration":664,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:05:51.151 [info] {"source":"oban","duration":1456,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:06:00.564 [info] {"source":"oban","duration":676,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:06:21.154 [info] {"source":"oban","duration":1886,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:06:51.157 [info] {"source":"oban","duration":1790,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:07:00.566 [info] {"source":"oban","duration":742,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:07:21.159 [info] {"source":"oban","duration":1283,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:07:51.161 [info] {"source":"oban","duration":1030,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:08:00.567 [info] {"source":"oban","duration":261,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:08:21.163 [info] {"source":"oban","duration":1007,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:08:51.166 [info] {"source":"oban","duration":1705,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:09:00.568 [info] {"source":"oban","duration":281,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:09:21.168 [info] {"source":"oban","duration":1437,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:09:51.170 [info] {"source":"oban","duration":1255,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:10:00.569 [info] {"source":"oban","duration":573,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:10:21.172 [info] {"source":"oban","duration":1069,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:10:51.174 [info] {"source":"oban","duration":1208,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:11:00.570 [info] {"source":"oban","duration":324,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:11:21.176 [info] {"source":"oban","duration":1159,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:11:51.178 [info] {"source":"oban","duration":1367,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:12:00.571 [info] {"source":"oban","duration":505,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:12:21.180 [info] {"source":"oban","duration":1270,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:12:51.182 [info] {"source":"oban","duration":1549,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:13:00.572 [info] {"source":"oban","duration":694,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:13:21.184 [info] {"source":"oban","duration":807,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:13:51.185 [info] {"source":"oban","duration":653,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:14:00.573 [info] {"source":"oban","duration":385,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:14:21.187 [info] {"source":"oban","duration":998,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:14:51.189 [info] {"source":"oban","duration":1339,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:15:00.575 [info] {"source":"oban","duration":567,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:15:21.192 [info] {"source":"oban","duration":1742,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:15:51.194 [info] {"source":"oban","duration":1473,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:16:00.576 [info] {"source":"oban","duration":356,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:16:21.196 [info] {"source":"oban","duration":1177,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:16:51.198 [info] {"source":"oban","duration":937,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:17:00.577 [info] {"source":"oban","duration":278,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:17:21.200 [info] {"source":"oban","duration":929,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:17:51.203 [info] {"source":"oban","duration":1799,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:18:00.579 [info] {"source":"oban","duration":924,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:18:21.205 [info] {"source":"oban","duration":1159,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:18:51.207 [info] {"source":"oban","duration":810,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:19:00.581 [info] {"source":"oban","duration":677,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:19:21.210 [info] {"source":"oban","duration":1710,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:19:51.212 [info] {"source":"oban","duration":1342,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:20:00.582 [info] {"source":"oban","duration":475,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:20:21.214 [info] {"source":"oban","duration":834,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:20:51.216 [info] {"source":"oban","duration":754,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:21:00.584 [info] {"source":"oban","duration":854,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:21:21.218 [info] {"source":"oban","duration":577,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:21:51.220 [info] {"source":"oban","duration":1004,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:22:00.586 [info] {"source":"oban","duration":692,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:22:21.222 [info] {"source":"oban","duration":1529,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:22:51.224 [info] {"source":"oban","duration":1536,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:23:00.587 [info] {"source":"oban","duration":314,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:23:21.226 [info] {"source":"oban","duration":729,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:23:51.227 [info] {"source":"oban","duration":1288,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:24:00.588 [info] {"source":"oban","duration":644,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:24:21.229 [info] {"source":"oban","duration":881,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:24:51.231 [info] {"source":"oban","duration":1345,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:25:00.591 [info] {"source":"oban","duration":578,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:25:21.234 [info] {"source":"oban","duration":1422,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:25:51.236 [info] {"source":"oban","duration":1592,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:26:00.592 [info] {"source":"oban","duration":342,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:26:21.238 [info] {"source":"oban","duration":1393,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:26:51.240 [info] {"source":"oban","duration":1526,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:27:00.594 [info] {"source":"oban","duration":704,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:27:21.242 [info] {"source":"oban","duration":1344,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:27:51.244 [info] {"source":"oban","duration":1405,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:28:00.595 [info] {"source":"oban","duration":305,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:28:21.246 [info] {"source":"oban","duration":756,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:28:51.248 [info] {"source":"oban","duration":936,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:29:00.597 [info] {"source":"oban","duration":514,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:29:21.249 [info] {"source":"oban","duration":687,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:29:51.251 [info] {"source":"oban","duration":1005,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:30:00.599 [info] {"source":"oban","duration":501,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:30:21.253 [info] {"source":"oban","duration":830,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:30:51.255 [info] {"source":"oban","duration":981,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:31:00.600 [info] {"source":"oban","duration":531,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:31:21.257 [info] {"source":"oban","duration":825,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:31:51.259 [info] {"source":"oban","duration":1280,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:32:00.602 [info] {"source":"oban","duration":430,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:32:21.261 [info] {"source":"oban","duration":971,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:32:51.263 [info] {"source":"oban","duration":1049,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:33:00.603 [info] {"source":"oban","duration":522,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:33:21.265 [info] {"source":"oban","duration":1311,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:33:51.267 [info] {"source":"oban","duration":774,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:34:00.604 [info] {"source":"oban","duration":461,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:34:21.269 [info] {"source":"oban","duration":1072,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:34:51.271 [info] {"source":"oban","duration":865,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:35:00.606 [info] {"source":"oban","duration":559,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:35:21.273 [info] {"source":"oban","duration":1032,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:35:51.275 [info] {"source":"oban","duration":656,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:36:00.608 [info] {"source":"oban","duration":356,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:36:21.276 [info] {"source":"oban","duration":831,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:36:51.278 [info] {"source":"oban","duration":1019,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:37:00.610 [info] {"source":"oban","duration":1219,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:37:21.280 [info] {"source":"oban","duration":942,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:37:51.282 [info] {"source":"oban","duration":1030,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:38:00.612 [info] {"source":"oban","duration":736,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:38:21.284 [info] {"source":"oban","duration":670,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:38:51.285 [info] {"source":"oban","duration":633,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:39:00.613 [info] {"source":"oban","duration":594,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:39:21.287 [info] {"source":"oban","duration":913,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:39:51.289 [info] {"source":"oban","duration":1455,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:40:00.614 [info] {"source":"oban","duration":457,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:40:21.291 [info] {"source":"oban","duration":882,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:40:51.293 [info] {"source":"oban","duration":1360,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:41:00.616 [info] {"source":"oban","duration":511,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:41:21.295 [info] {"source":"oban","duration":1392,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:41:51.297 [info] {"source":"oban","duration":952,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:42:00.618 [info] {"source":"oban","duration":957,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:42:21.299 [info] {"source":"oban","duration":1456,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:42:51.301 [info] {"source":"oban","duration":1142,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:43:00.619 [info] {"source":"oban","duration":352,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:43:21.303 [info] {"source":"oban","duration":780,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:43:51.305 [info] {"source":"oban","duration":871,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:44:00.621 [info] {"source":"oban","duration":385,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:44:21.307 [info] {"source":"oban","duration":785,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:44:51.309 [info] {"source":"oban","duration":931,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:45:00.623 [info] {"source":"oban","duration":596,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:45:21.311 [info] {"source":"oban","duration":1095,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:45:51.313 [info] {"source":"oban","duration":1238,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:46:00.625 [info] {"source":"oban","duration":1048,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:46:21.315 [info] {"source":"oban","duration":688,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:46:51.317 [info] {"source":"oban","duration":945,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:47:00.626 [info] {"source":"oban","duration":251,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:47:21.319 [info] {"source":"oban","duration":1291,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:47:51.321 [info] {"source":"oban","duration":1692,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:48:00.628 [info] {"source":"oban","duration":741,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:48:21.323 [info] {"source":"oban","duration":1163,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:48:51.325 [info] {"source":"oban","duration":896,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:49:00.630 [info] {"source":"oban","duration":693,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:49:21.327 [info] {"source":"oban","duration":847,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:49:51.329 [info] {"source":"oban","duration":1232,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:50:00.631 [info] {"source":"oban","duration":252,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:50:21.331 [info] {"source":"oban","duration":1075,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:50:51.333 [info] {"source":"oban","duration":1433,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:51:00.632 [info] {"source":"oban","duration":467,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:51:21.335 [info] {"source":"oban","duration":909,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:51:51.337 [info] {"source":"oban","duration":1286,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:52:00.634 [info] {"source":"oban","duration":895,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:52:21.339 [info] {"source":"oban","duration":1287,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:52:51.342 [info] {"source":"oban","duration":1907,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:53:00.636 [info] {"source":"oban","duration":971,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:53:05.012 [info] {"args":{"id":23904},"id":7407,"meta":{},"system_time":1766559185012733566,"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"]} 06:53:05.013 [debug] QUERY OK source="media_items" db=0.4ms idle=1758.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" = ?) [23904] 06:53:05.013 [info] User scripts lifecyle file either not present or is empty. Skipping. 06:53:05.014 [debug] QUERY OK source="sources" db=0.2ms idle=1010.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" = ?) [8] 06:53:05.014 [debug] QUERY OK source="media_profiles" db=0.2ms idle=759.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] 06:53:05.015 [debug] QUERY OK source="media_items" db=0.3ms 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 [23904] 06:53:05.016 [debug] QUERY OK source="media_metadata" db=0.2ms idle=4.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" = ?) [23904] 06:53:05.017 [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] 06:53:05.017 [debug] QUERY OK source="settings" db=0.1ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:53:05.018 [debug] QUERY OK source="settings" db=0.1ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:53:05.018 [debug] Running yt-dlp command for action: get_downloadable_status 06:53:05.019 [debug] QUERY OK source="settings" db=0.1ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:53:05.019 [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 [] 06:53:05.019 [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 [] 06:53:05.019 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e7/20/e720d69607f5326f8956470fa9ef807afd8d16a2283c03a03da0481a6121ff64.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 06:53:08.009 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/e7/20/e720d69607f5326f8956470fa9ef807afd8d16a2283c03a03da0481a6121ff64.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: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 06:53:08.009 [debug] Running yt-dlp command for action: download 06:53:08.010 [debug] QUERY OK source="settings" db=0.3ms idle=1755.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:53:08.010 [debug] QUERY OK source="settings" db=0.2ms idle=1756.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:53:08.010 [debug] QUERY OK source="settings" db=0.1ms idle=1756.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 06:53:08.011 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/9a/9e/9a9ebb05b9e3b855d7dacb89ff67e8a3fed12b91978a045b7293344b90731b9f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 06:53:11.374 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/9a/9e/9a9ebb05b9e3b855d7dacb89ff67e8a3fed12b91978a045b7293344b90731b9f.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 WARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 06:53:11.374 [error] yt-dlp download error for media item #23904: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 06:53:11.376 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23904},"id":7407,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6362564,"event":"job:exception","queue_time":522918,"attempt":15,"tags":["media_item","media_fetching","show_in_dashboard"]} 06:53:21.344 [info] {"source":"oban","duration":1563,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:53:51.346 [info] {"source":"oban","duration":1239,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:54:00.637 [info] {"source":"oban","duration":633,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:54:21.348 [info] {"source":"oban","duration":1169,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:54:51.351 [info] {"source":"oban","duration":1873,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:55:00.638 [info] {"source":"oban","duration":586,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:55:21.353 [info] {"source":"oban","duration":1355,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:55:51.355 [info] {"source":"oban","duration":1346,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:56:00.639 [info] {"source":"oban","duration":448,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:56:21.357 [info] {"source":"oban","duration":792,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:56:51.359 [info] {"source":"oban","duration":1272,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:57:00.640 [info] {"source":"oban","duration":461,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:57:21.362 [info] {"source":"oban","duration":1726,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:57:51.363 [info] {"source":"oban","duration":1398,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:58:00.642 [info] {"source":"oban","duration":506,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:58:21.365 [info] {"source":"oban","duration":1156,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:58:51.367 [info] {"source":"oban","duration":1071,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:59:00.643 [info] {"source":"oban","duration":509,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 06:59:21.369 [info] {"source":"oban","duration":1407,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 06:59:51.371 [info] {"source":"oban","duration":1457,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:00:00.645 [info] {"source":"oban","duration":733,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:00:21.373 [info] {"source":"oban","duration":798,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:00:51.375 [info] {"source":"oban","duration":1214,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:01:00.646 [info] {"source":"oban","duration":546,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:01:21.377 [info] {"source":"oban","duration":1461,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:01:51.379 [info] {"source":"oban","duration":1638,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:02:00.649 [info] {"source":"oban","duration":702,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:02:21.381 [info] {"source":"oban","duration":1093,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:02:51.383 [info] {"source":"oban","duration":1441,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:03:00.650 [info] {"source":"oban","duration":578,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:03:21.385 [info] {"source":"oban","duration":1011,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:03:51.387 [info] {"source":"oban","duration":1433,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:04:00.652 [info] {"source":"oban","duration":881,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:04:21.389 [info] {"source":"oban","duration":1315,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:04:51.391 [info] {"source":"oban","duration":1466,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:05:00.654 [info] {"source":"oban","duration":654,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:05:21.393 [info] {"source":"oban","duration":872,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:05:51.395 [info] {"source":"oban","duration":798,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:06:00.656 [info] {"source":"oban","duration":586,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:06:21.397 [info] {"source":"oban","duration":1499,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:06:51.400 [info] {"source":"oban","duration":1666,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:07:00.657 [info] {"source":"oban","duration":289,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:07:21.402 [info] {"source":"oban","duration":1773,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:07:51.405 [info] {"source":"oban","duration":1801,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:08:00.659 [info] {"source":"oban","duration":423,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:08:21.407 [info] {"source":"oban","duration":1348,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:08:51.409 [info] {"source":"oban","duration":1544,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:09:00.660 [info] {"source":"oban","duration":249,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:09:21.411 [info] {"source":"oban","duration":1340,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:09:51.413 [info] {"source":"oban","duration":896,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:10:00.662 [info] {"source":"oban","duration":506,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:10:21.415 [info] {"source":"oban","duration":1625,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:10:51.418 [info] {"source":"oban","duration":1183,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:11:00.664 [info] {"source":"oban","duration":877,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:11:21.420 [info] {"source":"oban","duration":1481,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:11:51.422 [info] {"source":"oban","duration":1021,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:12:00.666 [info] {"source":"oban","duration":844,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:12:21.425 [info] {"source":"oban","duration":2038,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:12:51.428 [info] {"source":"oban","duration":1881,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:13:00.667 [info] {"source":"oban","duration":457,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:13:21.431 [info] {"source":"oban","duration":1297,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:13:51.433 [info] {"source":"oban","duration":862,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:14:00.669 [info] {"source":"oban","duration":1305,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:14:21.435 [info] {"source":"oban","duration":860,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:14:51.437 [info] {"source":"oban","duration":1479,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:15:00.671 [info] {"source":"oban","duration":575,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:15:21.439 [info] {"source":"oban","duration":1223,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:15:51.441 [info] {"source":"oban","duration":947,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:16:00.672 [info] {"source":"oban","duration":534,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:16:21.443 [info] {"source":"oban","duration":1618,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:16:51.445 [info] {"source":"oban","duration":1365,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:17:00.673 [info] {"source":"oban","duration":686,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:17:21.447 [info] {"source":"oban","duration":1333,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:17:51.449 [info] {"source":"oban","duration":1083,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:18:00.675 [info] {"source":"oban","duration":629,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:18:21.451 [info] {"source":"oban","duration":1418,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:18:51.453 [info] {"source":"oban","duration":1123,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:19:00.677 [info] {"source":"oban","duration":520,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:19:21.456 [info] {"source":"oban","duration":2000,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:19:51.458 [info] {"source":"oban","duration":1296,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:20:00.678 [info] {"source":"oban","duration":618,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:20:21.460 [info] {"source":"oban","duration":1586,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:20:51.462 [info] {"source":"oban","duration":1250,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:21:00.680 [info] {"source":"oban","duration":367,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:21:21.464 [info] {"source":"oban","duration":936,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:21:51.466 [info] {"source":"oban","duration":1411,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:22:00.682 [info] {"source":"oban","duration":802,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:22:21.469 [info] {"source":"oban","duration":1027,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:22:51.470 [info] {"source":"oban","duration":842,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:23:00.683 [info] {"source":"oban","duration":451,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:23:21.472 [info] {"source":"oban","duration":1543,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:23:51.474 [info] {"source":"oban","duration":1172,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:24:00.685 [info] {"source":"oban","duration":487,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:24:21.476 [info] {"source":"oban","duration":1482,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:24:51.478 [info] {"source":"oban","duration":948,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:25:00.687 [info] {"source":"oban","duration":773,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:25:21.480 [info] {"source":"oban","duration":1440,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:25:51.482 [info] {"source":"oban","duration":1498,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:26:00.689 [info] {"source":"oban","duration":719,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:26:21.484 [info] {"source":"oban","duration":761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:26:51.486 [info] {"source":"oban","duration":847,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:27:00.691 [info] {"source":"oban","duration":487,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:27:21.489 [info] {"source":"oban","duration":1360,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:27:51.491 [info] {"source":"oban","duration":727,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:28:00.693 [info] {"source":"oban","duration":631,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:28:21.493 [info] {"source":"oban","duration":1218,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:28:51.495 [info] {"source":"oban","duration":1465,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:29:00.694 [info] {"source":"oban","duration":600,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:29:21.497 [info] {"source":"oban","duration":810,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:29:51.499 [info] {"source":"oban","duration":1062,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:30:00.696 [info] {"source":"oban","duration":366,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:30:21.502 [info] {"source":"oban","duration":1460,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:30:51.504 [info] {"source":"oban","duration":1330,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:31:00.698 [info] {"source":"oban","duration":466,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:31:21.506 [info] {"source":"oban","duration":1615,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:31:51.508 [info] {"source":"oban","duration":917,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:32:00.700 [info] {"source":"oban","duration":783,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:32:21.510 [info] {"source":"oban","duration":887,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:32:51.512 [info] {"source":"oban","duration":1145,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:33:00.701 [info] {"source":"oban","duration":328,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:33:21.514 [info] {"source":"oban","duration":1291,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:33:51.516 [info] {"source":"oban","duration":1235,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:34:00.702 [info] {"source":"oban","duration":499,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:34:21.518 [info] {"source":"oban","duration":1192,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:34:51.520 [info] {"source":"oban","duration":1192,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:35:00.704 [info] {"source":"oban","duration":647,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:35:21.522 [info] {"source":"oban","duration":804,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:35:51.524 [info] {"source":"oban","duration":1281,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:36:00.706 [info] {"source":"oban","duration":941,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:36:21.527 [info] {"source":"oban","duration":1693,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:36:51.528 [info] {"source":"oban","duration":1454,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:37:00.707 [info] {"source":"oban","duration":251,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:37:21.530 [info] {"source":"oban","duration":1363,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:37:51.532 [info] {"source":"oban","duration":1434,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:38:00.708 [info] {"source":"oban","duration":461,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:38:21.534 [info] {"source":"oban","duration":1543,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:38:51.537 [info] {"source":"oban","duration":1886,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:39:00.709 [info] {"source":"oban","duration":524,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:39:21.539 [info] {"source":"oban","duration":1274,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:39:51.541 [info] {"source":"oban","duration":838,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:40:00.710 [info] {"source":"oban","duration":507,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:40:21.543 [info] {"source":"oban","duration":1357,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:40:51.545 [info] {"source":"oban","duration":1281,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:41:00.712 [info] {"source":"oban","duration":515,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:41:21.547 [info] {"source":"oban","duration":1165,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:41:51.550 [info] {"source":"oban","duration":1847,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:42:00.714 [info] {"source":"oban","duration":511,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:42:21.552 [info] {"source":"oban","duration":862,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:42:51.554 [info] {"source":"oban","duration":827,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:43:00.715 [info] {"source":"oban","duration":224,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:43:21.556 [info] {"source":"oban","duration":1466,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:43:51.558 [info] {"source":"oban","duration":1316,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:44:00.717 [info] {"source":"oban","duration":871,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:44:21.559 [info] {"source":"oban","duration":706,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:44:51.561 [info] {"source":"oban","duration":855,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:45:00.718 [info] {"source":"oban","duration":272,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:45:21.564 [info] {"source":"oban","duration":1951,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":1} 07:45:51.566 [info] {"source":"oban","duration":1492,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:46:00.719 [info] {"source":"oban","duration":485,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:46:21.569 [info] {"source":"oban","duration":1606,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:46:51.571 [info] {"source":"oban","duration":1513,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:47:00.720 [info] {"source":"oban","duration":432,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:47:21.574 [info] {"source":"oban","duration":2061,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:47:51.576 [info] {"source":"oban","duration":1256,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:48:00.722 [info] {"source":"oban","duration":573,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:48:21.578 [info] {"source":"oban","duration":829,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:48:51.580 [info] {"source":"oban","duration":762,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:49:00.723 [info] {"source":"oban","duration":443,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:49:21.583 [info] {"source":"oban","duration":1892,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:49:51.585 [info] {"source":"oban","duration":1367,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:50:00.724 [info] {"source":"oban","duration":243,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:50:21.587 [info] {"source":"oban","duration":1451,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:50:51.589 [info] {"source":"oban","duration":870,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:51:00.726 [info] {"source":"oban","duration":435,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:51:21.591 [info] {"source":"oban","duration":1064,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:51:51.593 [info] {"source":"oban","duration":939,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:52:00.728 [info] {"source":"oban","duration":715,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:52:21.595 [info] {"source":"oban","duration":744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:52:51.597 [info] {"source":"oban","duration":1180,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:53:00.730 [info] {"source":"oban","duration":960,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:53:21.599 [info] {"source":"oban","duration":1271,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:53:51.601 [info] {"source":"oban","duration":1397,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:54:00.732 [info] {"source":"oban","duration":423,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:54:21.603 [info] {"source":"oban","duration":1248,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:54:51.605 [info] {"source":"oban","duration":803,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:55:00.733 [info] {"source":"oban","duration":432,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:55:21.607 [info] {"source":"oban","duration":890,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:55:37.842 [info] {"args":{"id":6},"id":7402,"meta":{},"system_time":1766562937842094169,"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"]} 07:55:37.842 [debug] QUERY OK source="sources" db=0.2ms idle=400.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 07:55:37.843 [debug] QUERY OK source="settings" db=0.3ms idle=400.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:55:37.845 [debug] QUERY OK source="media_items" db=2.2ms idle=401.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")))) [6] 07:55:37.846 [debug] QUERY OK source="media_items" db=0.4ms idle=9.8ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [6] 07:55:37.847 [debug] QUERY OK source="media_profiles" db=0.3ms idle=4.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 07:55:37.847 [debug] QUERY OK source="settings" db=0.1ms idle=4.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:55:37.847 [debug] QUERY OK source="settings" db=0.2ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:55:37.849 [debug] QUERY OK source="media_items" db=1.4ms 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."source_id" = ?) ORDER BY m0."uploaded_at" DESC LIMIT 50 OFFSET 20 [6] 07:55:37.851 [debug] Running yt-dlp command for action: get_media_attributes_for_collection 07:55:37.851 [debug] Current batch of media processed. Will check again in 1000ms 07:55:37.851 [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:55:37.851 [debug] QUERY OK source="settings" db=0.1ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 07:55:37.851 [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 [] 07:55:37.852 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@dematronsewingautomtion --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/DEMA SEWING MACHINE AUTOMATION/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/5a/4d/5a4d22f702eea68bdc48e740d637175138646e04534e46e4f57ca01108de0191.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/57/9d/579dc79270877a1203d5a3ca73912798dc77873e7b30e66d6fcc89bddbb85510.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 07:55:38.852 [debug] Current batch of media processed. Will check again in 1000ms 07:55:39.853 [debug] Current batch of media processed. Will check again in 1000ms 07:55:40.854 [debug] Current batch of media processed. Will check again in 1000ms 07:55:41.856 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "https://www.demasewingautomation.com/product/juki-dln-9010a-sh \n\n\nUSED JUKI DLN-9010A Needle Feed Sewing Machine - Precision Meets Power\n\nExperience industrial-grade performance with the JUKI DLN-9010A, a high-speed needle feed sewing machine built for accuracy and durability. Designed for heavy-duty fabrics, its direct-drive motor ensures ultra-smooth operation, minimal vibration, and exceptional stitch quality. With advanced features like automatic thread trimming, needle-feed mechanism for slip-free stitching, and a semi-dry lubrication system, the DLN-9010A boosts productivity while keeping maintenance low. Perfect for denim, canvas, and layered materials, it’s the professional’s choice for reliable, high-speed sewing.\n\nMain Features of the JUKI DLN-9010-7 Needle Feed Sewing Machine\n\nDirect-Drive Motor: Energy-efficient servo motor is built into the machine head for quick startup, low vibration, and reduced power consumption.\n\nNeedle Feed Mechanism: Synchronizes needle and feed dog movement to prevent material slippage—ideal for matching stripes, plaids, and stretchy or layered fabrics.\n\nSemi-Dry Lubrication System: No oil pan required; minimal lubrication protects your fabric and workspace from stains.\n\nAutomatic Functions:\n\nThread trimming\n\nReverse stitching (back-tack)\n\nPresser foot lifting\n\nAuto thread wiping\n\nIntegrated Control Panel: Easy operation with digital settings for speed, trimming, and stitching patterns (CP-18A or CP-180A options).\n\nSilent and Smooth Operation: Ideal for clean, quiet factory or studio environments.\n\nMicro-Lifter Function: Reduces fabric damage when sewing delicate or stretchy materials.\n\nHigh-Speed Performance: Up to 5,000 stitches per minute, enhancing productivity on long runs.\n\nBuilt-In Bobbin Winder: Convenient and time-saving bobbin winding without removing fabric.\n\nSafety Features:\n\nAuto stop when head is tilted\n\nOverload protection\n\nAdjustable Stitch Length: Fine-tune stitching for different materials and designs (up to 5mm).\n\nHeavy-Duty Ready: Handles medium to heavy-weight materials with ease.\n\nCALL TODAY TO PLACE YOUR ORDER 1-888-492-5553", "duration" => 78, "filename" => "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-12 Juki industrial sewing machine liquidation/Juki industrial sewing machine liquidation [DudEuV07qcI].mp4", "id" => "DudEuV07qcI", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=DudEuV07qcI", "playlist_index" => 1, "timestamp" => 1752349723, "title" => "Juki industrial sewing machine liquidation", "upload_date" => "20250712"} 07:55:41.856 [debug] QUERY OK source="sources" db=0.2ms idle=414.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 07:55:41.857 [debug] QUERY OK source="sources" db=0.1ms idle=414.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] 07:55:41.859 [debug] QUERY OK source="media_items" db=1.6ms idle=414.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-12 19:48:43Z], 6] 07:55:41.861 [debug] QUERY OK source="media_items" db=1.8ms idle=417.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["https://www.demasewingautomation.com/product/juki-dln-9010a-sh \n\n\nUSED JUKI DLN-9010A Needle Feed Sewing Machine - Precision Meets Power\n\nExperience industrial-grade performance with the JUKI DLN-9010A, a high-speed needle feed sewing machine built for accuracy and durability. Designed for heavy-duty fabrics, its direct-drive motor ensures ultra-smooth operation, minimal vibration, and exceptional stitch quality. With advanced features like automatic thread trimming, needle-feed mechanism for slip-free stitching, and a semi-dry lubrication system, the DLN-9010A boosts productivity while keeping maintenance low. Perfect for denim, canvas, and layered materials, it’s the professional’s choice for reliable, high-speed sewing.\n\nMain Features of the JUKI DLN-9010-7 Needle Feed Sewing Machine\n\nDirect-Drive Motor: Energy-efficient servo motor is built into the machine head for quick startup, low vibration, and reduced power consumption.\n\nNeedle Feed Mechanism: Synchronizes needle and feed dog movement to prevent material slippage—ideal for matching stripes, plaids, and stretchy or layered fabrics.\n\nSemi-Dry Lubrication System: No oil pan required; minimal lubrication protects your fabric and workspace from stains.\n\nAutomatic Functions:\n\nThread trimming\n\nReverse stitching (back-tack)\n\nPresser foot lifting\n\nAuto thread wiping\n\nIntegrated Control Panel: Easy operation with digital settings for speed, trimming, and stitching patterns (CP-18A or CP-180A options).\n\nSilent and Smooth Operation: Ideal for clean, quiet factory or studio environments.\n\nMicro-Lifter Function: Reduces fabric damage when sewing delicate or stretchy materials.\n\nHigh-Speed Performance: Up to 5,000 stitches per minute, enhancing productivity on long runs.\n\nBuilt-In Bobbin Winder: Convenient and time-saving bobbin winding without removing fabric.\n\nSafety Features:\n\nAuto stop when head is tilted\n\nOverload protection\n\nAdjustable Stitch Length: Fine-tune stitching for different materials and designs (up to 5mm).\n\nHeavy-Duty Ready: Handles medium to heavy-weight materials with ease.\n\nCALL TODAY TO PLACE YOUR ORDER 1-888-492-5553", "Juki industrial sewing machine liquidation", "69bf14c7-a3f2-465a-b664-79b1c27f8c18", "https://www.youtube.com/watch?v=DudEuV07qcI", "DudEuV07qcI", false, 78, false, 1, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-12 Juki industrial sewing machine liquidation/Juki industrial sewing machine liquidation [DudEuV07qcI].mp4", false, false, 6, [], 94, ~U[2025-07-12 19:48:43Z], ~U[2025-12-24 07:55:41Z], ~U[2025-12-24 07:55:41Z], "https://www.demasewingautomation.com/product/juki-dln-9010a-sh \n\n\nUSED JUKI DLN-9010A Needle Feed Sewing Machine - Precision Meets Power\n\nExperience industrial-grade performance with the JUKI DLN-9010A, a high-speed needle feed sewing machine built for accuracy and durability. Designed for heavy-duty fabrics, its direct-drive motor ensures ultra-smooth operation, minimal vibration, and exceptional stitch quality. With advanced features like automatic thread trimming, needle-feed mechanism for slip-free stitching, and a semi-dry lubrication system, the DLN-9010A boosts productivity while keeping maintenance low. Perfect for denim, canvas, and layered materials, it’s the professional’s choice for reliable, high-speed sewing.\n\nMain Features of the JUKI DLN-9010-7 Needle Feed Sewing Machine\n\nDirect-Drive Motor: Energy-efficient servo motor is built into the machine head for quick startup, low vibration, and reduced power consumption.\n\nNeedle Feed Mechanism: Synchronizes needle and feed dog movement to prevent material slippage—ideal for matching stripes, plaids, and stretchy or layered fabrics.\n\nSemi-Dry Lubrication System: No oil pan required; minimal lubrication protects your fabric and workspace from stains.\n\nAutomatic Functions:\n\nThread trimming\n\nReverse stitching (back-tack)\n\nPresser foot lifting\n\nAuto thread wiping\n\nIntegrated Control Panel: Easy operation with digital settings for speed, trimming, and stitching patterns (CP-18A or CP-180A options).\n\nSilent and Smooth Operation: Ideal for clean, quiet factory or studio environments.\n\nMicro-Lifter Function: Reduces fabric damage when sewing delicate or stretchy materials.\n\nHigh-Speed Performance: Up to 5,000 stitches per minute, enhancing productivity on long runs.\n\nBuilt-In Bobbin Winder: Convenient and time-saving bobbin winding without removing fabric.\n\nSafety Features:\n\nAuto stop when head is tilted\n\nOverload protection\n\nAdjustable Stitch Length: Fine-tune stitching for different materials and designs (up to 5mm).\n\nHeavy-Duty Ready: Handles medium to heavy-weight materials with ease.\n\nCALL TODAY TO PLACE YOUR ORDER 1-888-492-5553", "Juki industrial sewing machine liquidation", "https://www.youtube.com/watch?v=DudEuV07qcI", "DudEuV07qcI", 78, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-12 Juki industrial sewing machine liquidation/Juki industrial sewing machine liquidation [DudEuV07qcI].mp4", false, 6, ~U[2025-07-12 19:48:43Z]] 07:55:41.862 [debug] QUERY OK source="sources" db=0.3ms idle=17.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 07:55:41.862 [debug] QUERY OK source="media_profiles" db=0.2ms idle=5.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 07:55:41.863 [debug] QUERY OK source="media_items" db=0.3ms idle=5.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 [1333] 07:55:41.863 [debug] Current batch of media processed. Will check again in 1000ms 07:55:42.864 [debug] Current batch of media processed. Will check again in 1000ms 07:55:43.865 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "USED JUKI OVERLOCK MO-6716S 5 THREAD OVERLOCK SEWING MACHINE Click link below 👇\n\nhttps://www.demasewingautomation.com/product/juki-mo-6716s-used-\n\n\nThe Juki MO-6716S is an exceptional industrial overlock sewing machine featuring a 3-needle, 5-thread setup. Manufactured by Juki, a renowned leader in sewing technology and quality, this machine is specifically designed for overlock stitching on light to medium weight fabrics. It operates at high speeds while maintaining impressive reliability and consistency. Thanks to its differential feed mechanism, the MO-6716S is adaptable for various fabric types, accommodating both rigid and elastic materials.\n \n This pre-owned Juki MO-6716S serger sewing machine is available as part of a liquidation sale. It will be sold in sewing-ready condition, but keep in mind that it is an \"as is\" transaction. The offer includes a stand-up style table, a positioning servo motor, and a light, all at a fantastic price. If you have any inquiries or require additional information, please don't hesitate to reach out!\n\nTHIS MACHINE IS USED AND HAS COSMETIC FAULTS SO PLEASE CONSIDER BEFORE BUYING\n\nCLICK HERE IF YOU'RE INTRESTED IN A NEW JUKI MO-6816S\n\nNEW STAND AND TABLE IS AN OPTION AT THE COST OF $250.00", "duration" => 245, "filename" => "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-09 Juki MO-6716 Overlock ⧸ Serger Used/Juki MO-6716 Overlock ⧸ Serger Used [WWhLi4qPE-Q].mp4", "id" => "WWhLi4qPE-Q", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=WWhLi4qPE-Q", "playlist_index" => 2, "timestamp" => 1752102237, "title" => "Juki MO-6716 Overlock / Serger Used", "upload_date" => "20250709"} 07:55:43.866 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=423.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 07:55:43.866 [debug] QUERY OK source="sources" db=0.2ms idle=424.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 07:55:43.868 [debug] QUERY OK source="media_items" db=1.1ms idle=424.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-09 23:03:57Z], 6] 07:55:43.870 [debug] QUERY OK source="media_items" db=1.1ms idle=426.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["USED JUKI OVERLOCK MO-6716S 5 THREAD OVERLOCK SEWING MACHINE Click link below 👇\n\nhttps://www.demasewingautomation.com/product/juki-mo-6716s-used-\n\n\nThe Juki MO-6716S is an exceptional industrial overlock sewing machine featuring a 3-needle, 5-thread setup. Manufactured by Juki, a renowned leader in sewing technology and quality, this machine is specifically designed for overlock stitching on light to medium weight fabrics. It operates at high speeds while maintaining impressive reliability and consistency. Thanks to its differential feed mechanism, the MO-6716S is adaptable for various fabric types, accommodating both rigid and elastic materials.\n \n This pre-owned Juki MO-6716S serger sewing machine is available as part of a liquidation sale. It will be sold in sewing-ready condition, but keep in mind that it is an \"as is\" transaction. The offer includes a stand-up style table, a positioning servo motor, and a light, all at a fantastic price. If you have any inquiries or require additional information, please don't hesitate to reach out!\n\nTHIS MACHINE IS USED AND HAS COSMETIC FAULTS SO PLEASE CONSIDER BEFORE BUYING\n\nCLICK HERE IF YOU'RE INTRESTED IN A NEW JUKI MO-6816S\n\nNEW STAND AND TABLE IS AN OPTION AT THE COST OF $250.00", "Juki MO-6716 Overlock / Serger Used", "73930a66-769a-4ce3-ba64-28d6b19db475", "https://www.youtube.com/watch?v=WWhLi4qPE-Q", "WWhLi4qPE-Q", false, 245, false, 2, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-09 Juki MO-6716 Overlock ⧸ Serger Used/Juki MO-6716 Overlock ⧸ Serger Used [WWhLi4qPE-Q].mp4", false, false, 6, [], 98, ~U[2025-07-09 23:03:57Z], ~U[2025-12-24 07:55:43Z], ~U[2025-12-24 07:55:43Z], "USED JUKI OVERLOCK MO-6716S 5 THREAD OVERLOCK SEWING MACHINE Click link below 👇\n\nhttps://www.demasewingautomation.com/product/juki-mo-6716s-used-\n\n\nThe Juki MO-6716S is an exceptional industrial overlock sewing machine featuring a 3-needle, 5-thread setup. Manufactured by Juki, a renowned leader in sewing technology and quality, this machine is specifically designed for overlock stitching on light to medium weight fabrics. It operates at high speeds while maintaining impressive reliability and consistency. Thanks to its differential feed mechanism, the MO-6716S is adaptable for various fabric types, accommodating both rigid and elastic materials.\n \n This pre-owned Juki MO-6716S serger sewing machine is available as part of a liquidation sale. It will be sold in sewing-ready condition, but keep in mind that it is an \"as is\" transaction. The offer includes a stand-up style table, a positioning servo motor, and a light, all at a fantastic price. If you have any inquiries or require additional information, please don't hesitate to reach out!\n\nTHIS MACHINE IS USED AND HAS COSMETIC FAULTS SO PLEASE CONSIDER BEFORE BUYING\n\nCLICK HERE IF YOU'RE INTRESTED IN A NEW JUKI MO-6816S\n\nNEW STAND AND TABLE IS AN OPTION AT THE COST OF $250.00", "Juki MO-6716 Overlock / Serger Used", "https://www.youtube.com/watch?v=WWhLi4qPE-Q", "WWhLi4qPE-Q", 245, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-09 Juki MO-6716 Overlock ⧸ Serger Used/Juki MO-6716 Overlock ⧸ Serger Used [WWhLi4qPE-Q].mp4", false, 6, ~U[2025-07-09 23:03:57Z]] 07:55:43.870 [debug] QUERY OK source="sources" db=0.1ms idle=21.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 07:55:43.870 [debug] QUERY OK source="media_profiles" db=0.1ms idle=4.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 07:55:43.871 [debug] QUERY OK source="media_items" db=0.1ms idle=4.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 [1335] 07:55:43.871 [debug] Current batch of media processed. Will check again in 1000ms 07:55:44.872 [debug] Current batch of media processed. Will check again in 1000ms 07:55:45.873 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "https://www.demasewingautomation.com/product/used-juki-ddl8700\n\nWe are liquidating multiple units of the Juki DDL-8700 Preowned sewing machine in good sewing condition. To order please call 1-888-492-5553", "duration" => 88, "filename" => "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-08 Juki Sewing Machine liquidation DDL-8700/Juki Sewing Machine liquidation DDL-8700 [89Znm_wfud0].mp4", "id" => "89Znm_wfud0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=89Znm_wfud0", "playlist_index" => 3, "timestamp" => 1752009355, "title" => "Juki Sewing Machine liquidation DDL-8700", "upload_date" => "20250708"} 07:55:45.874 [debug] QUERY OK source="sources" db=0.1ms idle=431.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 07:55:45.874 [debug] QUERY OK source="sources" db=0.1ms idle=431.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 07:55:45.875 [debug] QUERY OK source="media_items" db=0.9ms idle=432.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-08 21:15:55Z], 6] 07:55:45.876 [debug] QUERY OK source="media_items" db=0.6ms idle=433.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["https://www.demasewingautomation.com/product/used-juki-ddl8700\n\nWe are liquidating multiple units of the Juki DDL-8700 Preowned sewing machine in good sewing condition. To order please call 1-888-492-5553", "Juki Sewing Machine liquidation DDL-8700", "4b6a1b66-262d-4646-b971-57caabb020a4", "https://www.youtube.com/watch?v=89Znm_wfud0", "89Znm_wfud0", false, 88, false, 3, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-08 Juki Sewing Machine liquidation DDL-8700/Juki Sewing Machine liquidation DDL-8700 [89Znm_wfud0].mp4", false, false, 6, [], 97, ~U[2025-07-08 21:15:55Z], ~U[2025-12-24 07:55:45Z], ~U[2025-12-24 07:55:45Z], "https://www.demasewingautomation.com/product/used-juki-ddl8700\n\nWe are liquidating multiple units of the Juki DDL-8700 Preowned sewing machine in good sewing condition. To order please call 1-888-492-5553", "Juki Sewing Machine liquidation DDL-8700", "https://www.youtube.com/watch?v=89Znm_wfud0", "89Znm_wfud0", 88, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-08 Juki Sewing Machine liquidation DDL-8700/Juki Sewing Machine liquidation DDL-8700 [89Znm_wfud0].mp4", false, 6, ~U[2025-07-08 21:15:55Z]] 07:55:45.876 [debug] QUERY OK source="sources" db=0.1ms idle=23.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 07:55:45.877 [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] 07:55:45.877 [debug] QUERY OK source="media_items" db=0.2ms idle=3.0ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [1338] 07:55:45.877 [debug] Current batch of media processed. Will check again in 1000ms 07:55:46.878 [debug] Current batch of media processed. Will check again in 1000ms 07:55:47.879 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Automatic Fabric Spreading", "duration" => 111, "filename" => "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-08 Automatic Fabric Spreading/Automatic Fabric Spreading [vlLn43zyqnE].mp4", "id" => "vlLn43zyqnE", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=vlLn43zyqnE", "playlist_index" => 4, "timestamp" => 1751936874, "title" => "Automatic Fabric Spreading", "upload_date" => "20250708"} 07:55:47.880 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=437.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] 07:55:47.880 [debug] QUERY OK source="sources" db=0.1ms idle=438.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 07:55:47.882 [debug] QUERY OK source="media_items" db=0.9ms idle=438.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-08 01:07:54Z], 6] 07:55:47.882 [debug] QUERY OK source="media_items" db=0.5ms idle=439.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Automatic Fabric Spreading", "Automatic Fabric Spreading", "4d54c49e-bf39-43e2-b314-50a7c85f069f", "https://www.youtube.com/watch?v=vlLn43zyqnE", "vlLn43zyqnE", false, 111, false, 4, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-08 Automatic Fabric Spreading/Automatic Fabric Spreading [vlLn43zyqnE].mp4", false, false, 6, [], 97, ~U[2025-07-08 01:07:54Z], ~U[2025-12-24 07:55:47Z], ~U[2025-12-24 07:55:47Z], "Automatic Fabric Spreading", "Automatic Fabric Spreading", "https://www.youtube.com/watch?v=vlLn43zyqnE", "vlLn43zyqnE", 111, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-08 Automatic Fabric Spreading/Automatic Fabric Spreading [vlLn43zyqnE].mp4", false, 6, ~U[2025-07-08 01:07:54Z]] 07:55:47.883 [debug] QUERY OK source="sources" db=0.1ms idle=25.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 07:55:47.883 [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] 07:55:47.883 [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 [1339] 07:55:47.884 [debug] Current batch of media processed. Will check again in 1000ms 07:55:48.885 [debug] Current batch of media processed. Will check again in 1000ms 07:55:49.886 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "https://www.demasewingautomation.com/", "duration" => 54, "filename" => "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-07 Cut & Sew Industrial Equipment Supplier DEMATRON/Cut & Sew Industrial Equipment Supplier DEMATRON [UKGB5_GRak4].mp4", "id" => "UKGB5_GRak4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=UKGB5_GRak4", "playlist_index" => 5, "timestamp" => 1751926561, "title" => "Cut & Sew Industrial Equipment Supplier DEMATRON", "upload_date" => "20250707"} 07:55:49.887 [debug] QUERY OK source="sources" db=0.2ms idle=444.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] 07:55:49.887 [debug] QUERY OK source="sources" db=0.1ms idle=444.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 07:55:49.888 [debug] QUERY OK source="media_items" db=0.9ms idle=445.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-07 22:16:01Z], 6] 07:55:49.890 [debug] QUERY OK source="media_items" db=0.7ms queue=0.9ms idle=446.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["https://www.demasewingautomation.com/", "Cut & Sew Industrial Equipment Supplier DEMATRON", "9e5c939f-50f5-425b-bf40-bfdb3615c021", "https://www.youtube.com/watch?v=UKGB5_GRak4", "UKGB5_GRak4", false, 54, false, 5, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-07 Cut & Sew Industrial Equipment Supplier DEMATRON/Cut & Sew Industrial Equipment Supplier DEMATRON [UKGB5_GRak4].mp4", false, false, 6, [], 98, ~U[2025-07-07 22:16:01Z], ~U[2025-12-24 07:55:49Z], ~U[2025-12-24 07:55:49Z], "https://www.demasewingautomation.com/", "Cut & Sew Industrial Equipment Supplier DEMATRON", "https://www.youtube.com/watch?v=UKGB5_GRak4", "UKGB5_GRak4", 54, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-07 Cut & Sew Industrial Equipment Supplier DEMATRON/Cut & Sew Industrial Equipment Supplier DEMATRON [UKGB5_GRak4].mp4", false, 6, ~U[2025-07-07 22:16:01Z]] 07:55:49.891 [debug] QUERY OK source="sources" db=0.2ms idle=29.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 07:55:49.891 [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] 07:55:49.891 [debug] QUERY OK source="media_items" db=0.2ms 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 [1341] 07:55:49.891 [debug] Current batch of media processed. Will check again in 1000ms 07:55:50.892 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Click below 👇\n\nhttps://www.demasewingautomation.com/products/industrial-sewing-machine/industrial-sewing-machine/programmable-sewing-machine", "duration" => 44, "filename" => "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-06 Rope Sewing/Rope Sewing [05Qdmq5SvIQ].mp4", "id" => "05Qdmq5SvIQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=05Qdmq5SvIQ", "playlist_index" => 6, "timestamp" => 1751766470, "title" => "Rope Sewing", "upload_date" => "20250706"} 07:55:50.892 [debug] QUERY OK source="sources" db=0.2ms queue=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 (?)) [6] 07:55:50.893 [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" = ?) [6] 07:55:50.894 [debug] QUERY OK source="media_items" db=1.0ms 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[2025-07-06 01:47:50Z], 6] 07:55:50.895 [debug] QUERY OK source="media_items" db=0.6ms idle=1003.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Click below 👇\n\nhttps://www.demasewingautomation.com/products/industrial-sewing-machine/industrial-sewing-machine/programmable-sewing-machine", "Rope Sewing", "334519a7-98f0-4bca-a13e-f6a1ded9914f", "https://www.youtube.com/watch?v=05Qdmq5SvIQ", "05Qdmq5SvIQ", false, 44, false, 6, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-06 Rope Sewing/Rope Sewing [05Qdmq5SvIQ].mp4", false, false, 6, [], 97, ~U[2025-07-06 01:47:50Z], ~U[2025-12-24 07:55:50Z], ~U[2025-12-24 07:55:50Z], "Click below 👇\n\nhttps://www.demasewingautomation.com/products/industrial-sewing-machine/industrial-sewing-machine/programmable-sewing-machine", "Rope Sewing", "https://www.youtube.com/watch?v=05Qdmq5SvIQ", "05Qdmq5SvIQ", 44, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-06 Rope Sewing/Rope Sewing [05Qdmq5SvIQ].mp4", false, 6, ~U[2025-07-06 01:47:50Z]] 07:55:50.896 [debug] QUERY OK source="sources" db=0.1ms idle=32.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 07:55:50.896 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 07:55:50.897 [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 [1343] 07:55:50.897 [debug] Current batch of media processed. Will check again in 1000ms 07:55:51.609 [info] {"source":"oban","duration":1475,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:55:51.898 [debug] Current batch of media processed. Will check again in 1000ms 07:55:52.900 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Click Link below 👇\n\nhttps://www.demasewingautomation.com/product/upholstery-sewing-machine\n\nFor more information on how to use this machine and details on how it works please call 1-888-492-5553. \n\nOver 30,000 industrial sewing machines available through our global network, we are the one stop supplier of sewing machines and automated sewing solutions to factories, contractors, and dealers worldwide.\n \nOnly the top quality brands\n JUKI, BROTHER\nYAMATO \nMitsubishi \nPegasus \nREECE \nWILCOX & \nGIBBS \n-offered direct to manufacturers at wholesale prices. \n\nChoose DEMA - where product availability and a low price are always guaranteed!", "duration" => 16, "filename" => "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-06 Auto Upholstery Stitching Pattern sewer DM-1280/Auto Upholstery Stitching Pattern sewer DM-1280 [hZ57f5mMMPM].mp4", "id" => "hZ57f5mMMPM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=hZ57f5mMMPM", "playlist_index" => 7, "timestamp" => 1751765671, "title" => "Auto Upholstery Stitching Pattern sewer DM-1280", "upload_date" => "20250706"} 07:55:52.900 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1033.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 07:55:52.901 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=458.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] 07:55:52.902 [debug] QUERY OK source="media_items" db=1.1ms idle=458.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-06 01:34:31Z], 6] 07:55:52.903 [debug] QUERY OK source="media_items" db=0.9ms idle=460.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Click Link below 👇\n\nhttps://www.demasewingautomation.com/product/upholstery-sewing-machine\n\nFor more information on how to use this machine and details on how it works please call 1-888-492-5553. \n\nOver 30,000 industrial sewing machines available through our global network, we are the one stop supplier of sewing machines and automated sewing solutions to factories, contractors, and dealers worldwide.\n \nOnly the top quality brands\n JUKI, BROTHER\nYAMATO \nMitsubishi \nPegasus \nREECE \nWILCOX & \nGIBBS \n-offered direct to manufacturers at wholesale prices. \n\nChoose DEMA - where product availability and a low price are always guaranteed!", "Auto Upholstery Stitching Pattern sewer DM-1280", "8fc54fb5-c7e1-4d1c-beca-3f6bedefd098", "https://www.youtube.com/watch?v=hZ57f5mMMPM", "hZ57f5mMMPM", false, 16, false, 7, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-06 Auto Upholstery Stitching Pattern sewer DM-1280/Auto Upholstery Stitching Pattern sewer DM-1280 [hZ57f5mMMPM].mp4", false, false, 6, [], 97, ~U[2025-07-06 01:34:31Z], ~U[2025-12-24 07:55:52Z], ~U[2025-12-24 07:55:52Z], "Click Link below 👇\n\nhttps://www.demasewingautomation.com/product/upholstery-sewing-machine\n\nFor more information on how to use this machine and details on how it works please call 1-888-492-5553. \n\nOver 30,000 industrial sewing machines available through our global network, we are the one stop supplier of sewing machines and automated sewing solutions to factories, contractors, and dealers worldwide.\n \nOnly the top quality brands\n JUKI, BROTHER\nYAMATO \nMitsubishi \nPegasus \nREECE \nWILCOX & \nGIBBS \n-offered direct to manufacturers at wholesale prices. \n\nChoose DEMA - where product availability and a low price are always guaranteed!", "Auto Upholstery Stitching Pattern sewer DM-1280", "https://www.youtube.com/watch?v=hZ57f5mMMPM", "hZ57f5mMMPM", 16, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-06 Auto Upholstery Stitching Pattern sewer DM-1280/Auto Upholstery Stitching Pattern sewer DM-1280 [hZ57f5mMMPM].mp4", false, 6, ~U[2025-07-06 01:34:31Z]] 07:55:52.904 [debug] QUERY OK source="sources" db=0.2ms idle=35.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 07:55:52.904 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 07:55:52.905 [debug] QUERY OK source="media_items" db=0.3ms 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 [1344] 07:55:52.905 [debug] Current batch of media processed. Will check again in 1000ms 07:55:53.906 [debug] Current batch of media processed. Will check again in 1000ms 07:55:54.908 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "DEMATRON 867 Click here 👉 https://www.facebook.com/share/v/14KyTNLe87r/?mibextid=wwXIfr", "duration" => 57, "filename" => "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-04 Walking foot for upholstery DEMATRON 867/Walking foot for upholstery DEMATRON 867 [85MHBZ6fWI4].mp4", "id" => "85MHBZ6fWI4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=85MHBZ6fWI4", "playlist_index" => 8, "timestamp" => 1751633713, "title" => "Walking foot for upholstery DEMATRON 867", "upload_date" => "20250704"} 07:55:54.908 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=466.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 07:55:54.909 [debug] QUERY OK source="sources" db=0.3ms idle=466.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 07:55:54.910 [debug] QUERY OK source="media_items" db=1.0ms idle=467.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-04 12:55:13Z], 6] 07:55:54.911 [debug] QUERY OK source="media_items" db=0.6ms idle=468.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["DEMATRON 867 Click here 👉 https://www.facebook.com/share/v/14KyTNLe87r/?mibextid=wwXIfr", "Walking foot for upholstery DEMATRON 867", "c35732eb-446c-40e6-836b-d45312f90e9a", "https://www.youtube.com/watch?v=85MHBZ6fWI4", "85MHBZ6fWI4", false, 57, false, 8, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-04 Walking foot for upholstery DEMATRON 867/Walking foot for upholstery DEMATRON 867 [85MHBZ6fWI4].mp4", false, false, 6, [], 98, ~U[2025-07-04 12:55:13Z], ~U[2025-12-24 07:55:54Z], ~U[2025-12-24 07:55:54Z], "DEMATRON 867 Click here 👉 https://www.facebook.com/share/v/14KyTNLe87r/?mibextid=wwXIfr", "Walking foot for upholstery DEMATRON 867", "https://www.youtube.com/watch?v=85MHBZ6fWI4", "85MHBZ6fWI4", 57, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-04 Walking foot for upholstery DEMATRON 867/Walking foot for upholstery DEMATRON 867 [85MHBZ6fWI4].mp4", false, 6, ~U[2025-07-04 12:55:13Z]] 07:55:54.912 [debug] QUERY OK source="sources" db=0.3ms idle=38.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] 07:55:54.912 [debug] QUERY OK source="media_profiles" db=0.3ms 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] 07:55:54.913 [debug] QUERY OK source="media_items" db=0.3ms 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 [1346] 07:55:54.913 [debug] Current batch of media processed. Will check again in 1000ms 07:55:55.914 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "DEMATRON Automated sewing station:\n\nCall for more information 1-888-492-5553", "duration" => 52, "filename" => "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-06-20 Automated Overlock ⧸ Serger Industrial Sewing/Automated Overlock ⧸ Serger Industrial Sewing [DNEmgtJJ7cw].mp4", "id" => "DNEmgtJJ7cw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=DNEmgtJJ7cw", "playlist_index" => 9, "timestamp" => 1750431957, "title" => "Automated Overlock / Serger Industrial Sewing", "upload_date" => "20250620"} 07:55:55.915 [debug] QUERY OK source="sources" db=0.2ms 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" IN (?)) [6] 07:55:55.915 [debug] QUERY OK source="sources" db=0.1ms 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] 07:55:55.917 [debug] QUERY OK source="media_items" db=1.1ms 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[2025-06-20 15:05:57Z], 6] 07:55:55.918 [debug] QUERY OK source="media_items" db=0.7ms idle=1003.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["DEMATRON Automated sewing station:\n\nCall for more information 1-888-492-5553", "Automated Overlock / Serger Industrial Sewing", "a157b3a5-e639-421d-ad87-f7e3b40c01a5", "https://www.youtube.com/watch?v=DNEmgtJJ7cw", "DNEmgtJJ7cw", false, 52, false, 9, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-06-20 Automated Overlock ⧸ Serger Industrial Sewing/Automated Overlock ⧸ Serger Industrial Sewing [DNEmgtJJ7cw].mp4", false, false, 6, [], 98, ~U[2025-06-20 15:05:57Z], ~U[2025-12-24 07:55:55Z], ~U[2025-12-24 07:55:55Z], "DEMATRON Automated sewing station:\n\nCall for more information 1-888-492-5553", "Automated Overlock / Serger Industrial Sewing", "https://www.youtube.com/watch?v=DNEmgtJJ7cw", "DNEmgtJJ7cw", 52, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-06-20 Automated Overlock ⧸ Serger Industrial Sewing/Automated Overlock ⧸ Serger Industrial Sewing [DNEmgtJJ7cw].mp4", false, 6, ~U[2025-06-20 15:05:57Z]] 07:55:55.918 [debug] QUERY OK source="sources" db=0.2ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 07:55:55.919 [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] 07:55:55.919 [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 [1348] 07:55:55.919 [debug] Current batch of media processed. Will check again in 1000ms 07:55:55.930 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@dematronsewingautomtion --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/DEMA SEWING MACHINE AUTOMATION/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/5a/4d/5a4d22f702eea68bdc48e740d637175138646e04534e46e4f57ca01108de0191.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/57/9d/579dc79270877a1203d5a3ca73912798dc77873e7b30e66d6fcc89bddbb85510.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 101 with: 07:55:55.931 [debug] Gracefully stopping file follower 07:55:55.932 [debug] QUERY OK source="sources" db=0.6ms queue=0.1ms idle=14.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [6] 07:55:55.933 [debug] QUERY OK source="sources" db=0.1ms idle=14.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 07:55:55.934 [debug] QUERY OK source="media_items" db=0.9ms idle=14.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-12 19:48:43Z], 6] 07:55:55.936 [debug] QUERY OK source="media_items" db=1.3ms idle=15.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["https://www.demasewingautomation.com/product/juki-dln-9010a-sh \n\n\nUSED JUKI DLN-9010A Needle Feed Sewing Machine - Precision Meets Power\n\nExperience industrial-grade performance with the JUKI DLN-9010A, a high-speed needle feed sewing machine built for accuracy and durability. Designed for heavy-duty fabrics, its direct-drive motor ensures ultra-smooth operation, minimal vibration, and exceptional stitch quality. With advanced features like automatic thread trimming, needle-feed mechanism for slip-free stitching, and a semi-dry lubrication system, the DLN-9010A boosts productivity while keeping maintenance low. Perfect for denim, canvas, and layered materials, it’s the professional’s choice for reliable, high-speed sewing.\n\nMain Features of the JUKI DLN-9010-7 Needle Feed Sewing Machine\n\nDirect-Drive Motor: Energy-efficient servo motor is built into the machine head for quick startup, low vibration, and reduced power consumption.\n\nNeedle Feed Mechanism: Synchronizes needle and feed dog movement to prevent material slippage—ideal for matching stripes, plaids, and stretchy or layered fabrics.\n\nSemi-Dry Lubrication System: No oil pan required; minimal lubrication protects your fabric and workspace from stains.\n\nAutomatic Functions:\n\nThread trimming\n\nReverse stitching (back-tack)\n\nPresser foot lifting\n\nAuto thread wiping\n\nIntegrated Control Panel: Easy operation with digital settings for speed, trimming, and stitching patterns (CP-18A or CP-180A options).\n\nSilent and Smooth Operation: Ideal for clean, quiet factory or studio environments.\n\nMicro-Lifter Function: Reduces fabric damage when sewing delicate or stretchy materials.\n\nHigh-Speed Performance: Up to 5,000 stitches per minute, enhancing productivity on long runs.\n\nBuilt-In Bobbin Winder: Convenient and time-saving bobbin winding without removing fabric.\n\nSafety Features:\n\nAuto stop when head is tilted\n\nOverload protection\n\nAdjustable Stitch Length: Fine-tune stitching for different materials and designs (up to 5mm).\n\nHeavy-Duty Ready: Handles medium to heavy-weight materials with ease.\n\nCALL TODAY TO PLACE YOUR ORDER 1-888-492-5553", "Juki industrial sewing machine liquidation", "42740708-0489-4846-98e2-2e3787176fc6", "https://www.youtube.com/watch?v=DudEuV07qcI", "DudEuV07qcI", false, 78, false, 1, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-12 Juki industrial sewing machine liquidation/Juki industrial sewing machine liquidation [DudEuV07qcI].mp4", false, false, 6, [], 94, ~U[2025-07-12 19:48:43Z], ~U[2025-12-24 07:55:55Z], ~U[2025-12-24 07:55:55Z], "https://www.demasewingautomation.com/product/juki-dln-9010a-sh \n\n\nUSED JUKI DLN-9010A Needle Feed Sewing Machine - Precision Meets Power\n\nExperience industrial-grade performance with the JUKI DLN-9010A, a high-speed needle feed sewing machine built for accuracy and durability. Designed for heavy-duty fabrics, its direct-drive motor ensures ultra-smooth operation, minimal vibration, and exceptional stitch quality. With advanced features like automatic thread trimming, needle-feed mechanism for slip-free stitching, and a semi-dry lubrication system, the DLN-9010A boosts productivity while keeping maintenance low. Perfect for denim, canvas, and layered materials, it’s the professional’s choice for reliable, high-speed sewing.\n\nMain Features of the JUKI DLN-9010-7 Needle Feed Sewing Machine\n\nDirect-Drive Motor: Energy-efficient servo motor is built into the machine head for quick startup, low vibration, and reduced power consumption.\n\nNeedle Feed Mechanism: Synchronizes needle and feed dog movement to prevent material slippage—ideal for matching stripes, plaids, and stretchy or layered fabrics.\n\nSemi-Dry Lubrication System: No oil pan required; minimal lubrication protects your fabric and workspace from stains.\n\nAutomatic Functions:\n\nThread trimming\n\nReverse stitching (back-tack)\n\nPresser foot lifting\n\nAuto thread wiping\n\nIntegrated Control Panel: Easy operation with digital settings for speed, trimming, and stitching patterns (CP-18A or CP-180A options).\n\nSilent and Smooth Operation: Ideal for clean, quiet factory or studio environments.\n\nMicro-Lifter Function: Reduces fabric damage when sewing delicate or stretchy materials.\n\nHigh-Speed Performance: Up to 5,000 stitches per minute, enhancing productivity on long runs.\n\nBuilt-In Bobbin Winder: Convenient and time-saving bobbin winding without removing fabric.\n\nSafety Features:\n\nAuto stop when head is tilted\n\nOverload protection\n\nAdjustable Stitch Length: Fine-tune stitching for different materials and designs (up to 5mm).\n\nHeavy-Duty Ready: Handles medium to heavy-weight materials with ease.\n\nCALL TODAY TO PLACE YOUR ORDER 1-888-492-5553", "Juki industrial sewing machine liquidation", "https://www.youtube.com/watch?v=DudEuV07qcI", "DudEuV07qcI", 78, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-12 Juki industrial sewing machine liquidation/Juki industrial sewing machine liquidation [DudEuV07qcI].mp4", false, 6, ~U[2025-07-12 19:48:43Z]] 07:55:55.936 [debug] QUERY OK source="sources" db=0.2ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [6] 07:55:55.937 [debug] QUERY OK source="media_items" db=1.0ms idle=4.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-09 23:03:57Z], 6] 07:55:56.063 [debug] QUERY OK source="media_items" db=125.6ms idle=5.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["USED JUKI OVERLOCK MO-6716S 5 THREAD OVERLOCK SEWING MACHINE Click link below 👇\n\nhttps://www.demasewingautomation.com/product/juki-mo-6716s-used-\n\n\nThe Juki MO-6716S is an exceptional industrial overlock sewing machine featuring a 3-needle, 5-thread setup. Manufactured by Juki, a renowned leader in sewing technology and quality, this machine is specifically designed for overlock stitching on light to medium weight fabrics. It operates at high speeds while maintaining impressive reliability and consistency. Thanks to its differential feed mechanism, the MO-6716S is adaptable for various fabric types, accommodating both rigid and elastic materials.\n \n This pre-owned Juki MO-6716S serger sewing machine is available as part of a liquidation sale. It will be sold in sewing-ready condition, but keep in mind that it is an \"as is\" transaction. The offer includes a stand-up style table, a positioning servo motor, and a light, all at a fantastic price. If you have any inquiries or require additional information, please don't hesitate to reach out!\n\nTHIS MACHINE IS USED AND HAS COSMETIC FAULTS SO PLEASE CONSIDER BEFORE BUYING\n\nCLICK HERE IF YOU'RE INTRESTED IN A NEW JUKI MO-6816S\n\nNEW STAND AND TABLE IS AN OPTION AT THE COST OF $250.00", "Juki MO-6716 Overlock / Serger Used", "6d1bdc5f-3037-41bd-b956-1f4898bfa5a2", "https://www.youtube.com/watch?v=WWhLi4qPE-Q", "WWhLi4qPE-Q", false, 245, false, 2, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-09 Juki MO-6716 Overlock ⧸ Serger Used/Juki MO-6716 Overlock ⧸ Serger Used [WWhLi4qPE-Q].mp4", false, false, 6, [], 98, ~U[2025-07-09 23:03:57Z], ~U[2025-12-24 07:55:55Z], ~U[2025-12-24 07:55:55Z], "USED JUKI OVERLOCK MO-6716S 5 THREAD OVERLOCK SEWING MACHINE Click link below 👇\n\nhttps://www.demasewingautomation.com/product/juki-mo-6716s-used-\n\n\nThe Juki MO-6716S is an exceptional industrial overlock sewing machine featuring a 3-needle, 5-thread setup. Manufactured by Juki, a renowned leader in sewing technology and quality, this machine is specifically designed for overlock stitching on light to medium weight fabrics. It operates at high speeds while maintaining impressive reliability and consistency. Thanks to its differential feed mechanism, the MO-6716S is adaptable for various fabric types, accommodating both rigid and elastic materials.\n \n This pre-owned Juki MO-6716S serger sewing machine is available as part of a liquidation sale. It will be sold in sewing-ready condition, but keep in mind that it is an \"as is\" transaction. The offer includes a stand-up style table, a positioning servo motor, and a light, all at a fantastic price. If you have any inquiries or require additional information, please don't hesitate to reach out!\n\nTHIS MACHINE IS USED AND HAS COSMETIC FAULTS SO PLEASE CONSIDER BEFORE BUYING\n\nCLICK HERE IF YOU'RE INTRESTED IN A NEW JUKI MO-6816S\n\nNEW STAND AND TABLE IS AN OPTION AT THE COST OF $250.00", "Juki MO-6716 Overlock / Serger Used", "https://www.youtube.com/watch?v=WWhLi4qPE-Q", "WWhLi4qPE-Q", 245, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-09 Juki MO-6716 Overlock ⧸ Serger Used/Juki MO-6716 Overlock ⧸ Serger Used [WWhLi4qPE-Q].mp4", false, 6, ~U[2025-07-09 23:03:57Z]] 07:55:56.064 [debug] QUERY OK source="sources" db=0.4ms idle=130.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 07:55:56.065 [debug] QUERY OK source="media_items" db=0.9ms idle=129.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-08 21:15:55Z], 6] 07:55:56.798 [debug] QUERY OK source="media_items" db=732.0ms idle=129.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["https://www.demasewingautomation.com/product/used-juki-ddl8700\n\nWe are liquidating multiple units of the Juki DDL-8700 Preowned sewing machine in good sewing condition. To order please call 1-888-492-5553", "Juki Sewing Machine liquidation DDL-8700", "9c49c3d1-94bb-4505-a0ae-65c3def3f75e", "https://www.youtube.com/watch?v=89Znm_wfud0", "89Znm_wfud0", false, 88, false, 3, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-08 Juki Sewing Machine liquidation DDL-8700/Juki Sewing Machine liquidation DDL-8700 [89Znm_wfud0].mp4", false, false, 6, [], 97, ~U[2025-07-08 21:15:55Z], ~U[2025-12-24 07:55:56Z], ~U[2025-12-24 07:55:56Z], "https://www.demasewingautomation.com/product/used-juki-ddl8700\n\nWe are liquidating multiple units of the Juki DDL-8700 Preowned sewing machine in good sewing condition. To order please call 1-888-492-5553", "Juki Sewing Machine liquidation DDL-8700", "https://www.youtube.com/watch?v=89Znm_wfud0", "89Znm_wfud0", 88, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-08 Juki Sewing Machine liquidation DDL-8700/Juki Sewing Machine liquidation DDL-8700 [89Znm_wfud0].mp4", false, 6, ~U[2025-07-08 21:15:55Z]] 07:55:56.799 [debug] QUERY OK source="sources" db=0.5ms queue=0.1ms idle=861.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 07:55:56.801 [debug] QUERY OK source="media_items" db=1.3ms queue=0.1ms idle=736.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-08 01:07:54Z], 6] 07:55:56.802 [debug] QUERY OK source="media_items" db=0.5ms idle=736.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Automatic Fabric Spreading", "Automatic Fabric Spreading", "d746925e-717e-4593-b04c-d39462c72816", "https://www.youtube.com/watch?v=vlLn43zyqnE", "vlLn43zyqnE", false, 111, false, 4, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-08 Automatic Fabric Spreading/Automatic Fabric Spreading [vlLn43zyqnE].mp4", false, false, 6, [], 97, ~U[2025-07-08 01:07:54Z], ~U[2025-12-24 07:55:56Z], ~U[2025-12-24 07:55:56Z], "Automatic Fabric Spreading", "Automatic Fabric Spreading", "https://www.youtube.com/watch?v=vlLn43zyqnE", "vlLn43zyqnE", 111, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-08 Automatic Fabric Spreading/Automatic Fabric Spreading [vlLn43zyqnE].mp4", false, 6, ~U[2025-07-08 01:07:54Z]] 07:55:56.802 [debug] QUERY OK source="sources" db=0.3ms idle=736.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] 07:55:56.804 [debug] QUERY OK source="media_items" db=0.8ms idle=4.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-07-07 22:16:01Z], 6] 07:55:56.804 [debug] QUERY OK source="media_items" db=0.4ms idle=4.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["https://www.demasewingautomation.com/", "Cut & Sew Industrial Equipment Supplier DEMATRON", "695ff12d-22a9-498b-a57f-e454077436da", "https://www.youtube.com/watch?v=UKGB5_GRak4", "UKGB5_GRak4", false, 54, false, 5, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-07 Cut & Sew Industrial Equipment Supplier DEMATRON/Cut & Sew Industrial Equipment Supplier DEMATRON [UKGB5_GRak4].mp4", false, false, 6, [], 98, ~U[2025-07-07 22:16:01Z], ~U[2025-12-24 07:55:56Z], ~U[2025-12-24 07:55:56Z], "https://www.demasewingautomation.com/", "Cut & Sew Industrial Equipment Supplier DEMATRON", "https://www.youtube.com/watch?v=UKGB5_GRak4", "UKGB5_GRak4", 54, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-07 Cut & Sew Industrial Equipment Supplier DEMATRON/Cut & Sew Industrial Equipment Supplier DEMATRON [UKGB5_GRak4].mp4", false, 6, ~U[2025-07-07 22:16:01Z]] 07:55:56.805 [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] 07:55:56.806 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms 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[2025-07-06 01:47:50Z], 6] 07:55:56.807 [debug] QUERY OK source="media_items" db=0.5ms idle=3.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Click below 👇\n\nhttps://www.demasewingautomation.com/products/industrial-sewing-machine/industrial-sewing-machine/programmable-sewing-machine", "Rope Sewing", "37b5858e-8bb9-41e0-bfd2-2b258b39ce6f", "https://www.youtube.com/watch?v=05Qdmq5SvIQ", "05Qdmq5SvIQ", false, 44, false, 6, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-06 Rope Sewing/Rope Sewing [05Qdmq5SvIQ].mp4", false, false, 6, [], 97, ~U[2025-07-06 01:47:50Z], ~U[2025-12-24 07:55:56Z], ~U[2025-12-24 07:55:56Z], "Click below 👇\n\nhttps://www.demasewingautomation.com/products/industrial-sewing-machine/industrial-sewing-machine/programmable-sewing-machine", "Rope Sewing", "https://www.youtube.com/watch?v=05Qdmq5SvIQ", "05Qdmq5SvIQ", 44, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-06 Rope Sewing/Rope Sewing [05Qdmq5SvIQ].mp4", false, 6, ~U[2025-07-06 01:47:50Z]] 07:55:56.807 [debug] QUERY OK source="sources" db=0.3ms 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] 07:55:56.808 [debug] QUERY OK source="media_items" db=0.7ms 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[2025-07-06 01:34:31Z], 6] 07:55:56.810 [debug] QUERY OK source="media_items" db=0.8ms idle=3.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Click Link below 👇\n\nhttps://www.demasewingautomation.com/product/upholstery-sewing-machine\n\nFor more information on how to use this machine and details on how it works please call 1-888-492-5553. \n\nOver 30,000 industrial sewing machines available through our global network, we are the one stop supplier of sewing machines and automated sewing solutions to factories, contractors, and dealers worldwide.\n \nOnly the top quality brands\n JUKI, BROTHER\nYAMATO \nMitsubishi \nPegasus \nREECE \nWILCOX & \nGIBBS \n-offered direct to manufacturers at wholesale prices. \n\nChoose DEMA - where product availability and a low price are always guaranteed!", "Auto Upholstery Stitching Pattern sewer DM-1280", "3a62252f-ab20-471b-a55a-d75545db757f", "https://www.youtube.com/watch?v=hZ57f5mMMPM", "hZ57f5mMMPM", false, 16, false, 7, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-06 Auto Upholstery Stitching Pattern sewer DM-1280/Auto Upholstery Stitching Pattern sewer DM-1280 [hZ57f5mMMPM].mp4", false, false, 6, [], 97, ~U[2025-07-06 01:34:31Z], ~U[2025-12-24 07:55:56Z], ~U[2025-12-24 07:55:56Z], "Click Link below 👇\n\nhttps://www.demasewingautomation.com/product/upholstery-sewing-machine\n\nFor more information on how to use this machine and details on how it works please call 1-888-492-5553. \n\nOver 30,000 industrial sewing machines available through our global network, we are the one stop supplier of sewing machines and automated sewing solutions to factories, contractors, and dealers worldwide.\n \nOnly the top quality brands\n JUKI, BROTHER\nYAMATO \nMitsubishi \nPegasus \nREECE \nWILCOX & \nGIBBS \n-offered direct to manufacturers at wholesale prices. \n\nChoose DEMA - where product availability and a low price are always guaranteed!", "Auto Upholstery Stitching Pattern sewer DM-1280", "https://www.youtube.com/watch?v=hZ57f5mMMPM", "hZ57f5mMMPM", 16, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-06 Auto Upholstery Stitching Pattern sewer DM-1280/Auto Upholstery Stitching Pattern sewer DM-1280 [hZ57f5mMMPM].mp4", false, 6, ~U[2025-07-06 01:34:31Z]] 07:55:56.810 [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] 07:55:56.811 [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[2025-07-04 12:55:13Z], 6] 07:55:56.812 [debug] QUERY OK source="media_items" db=0.6ms idle=4.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["DEMATRON 867 Click here 👉 https://www.facebook.com/share/v/14KyTNLe87r/?mibextid=wwXIfr", "Walking foot for upholstery DEMATRON 867", "c2cf2bed-5009-4858-9bb0-22f3a1f0d438", "https://www.youtube.com/watch?v=85MHBZ6fWI4", "85MHBZ6fWI4", false, 57, false, 8, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-04 Walking foot for upholstery DEMATRON 867/Walking foot for upholstery DEMATRON 867 [85MHBZ6fWI4].mp4", false, false, 6, [], 98, ~U[2025-07-04 12:55:13Z], ~U[2025-12-24 07:55:56Z], ~U[2025-12-24 07:55:56Z], "DEMATRON 867 Click here 👉 https://www.facebook.com/share/v/14KyTNLe87r/?mibextid=wwXIfr", "Walking foot for upholstery DEMATRON 867", "https://www.youtube.com/watch?v=85MHBZ6fWI4", "85MHBZ6fWI4", 57, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-07-04 Walking foot for upholstery DEMATRON 867/Walking foot for upholstery DEMATRON 867 [85MHBZ6fWI4].mp4", false, 6, ~U[2025-07-04 12:55:13Z]] 07:55:56.813 [debug] QUERY OK source="sources" db=0.3ms 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] 07:55:56.814 [debug] QUERY OK source="media_items" db=0.7ms 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[2025-06-20 15:05:57Z], 6] 07:55:56.815 [debug] QUERY OK source="media_items" db=0.5ms idle=3.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["DEMATRON Automated sewing station:\n\nCall for more information 1-888-492-5553", "Automated Overlock / Serger Industrial Sewing", "458bc596-6d1a-4d41-9232-0260d15a3447", "https://www.youtube.com/watch?v=DNEmgtJJ7cw", "DNEmgtJJ7cw", false, 52, false, 9, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-06-20 Automated Overlock ⧸ Serger Industrial Sewing/Automated Overlock ⧸ Serger Industrial Sewing [DNEmgtJJ7cw].mp4", false, false, 6, [], 98, ~U[2025-06-20 15:05:57Z], ~U[2025-12-24 07:55:56Z], ~U[2025-12-24 07:55:56Z], "DEMATRON Automated sewing station:\n\nCall for more information 1-888-492-5553", "Automated Overlock / Serger Industrial Sewing", "https://www.youtube.com/watch?v=DNEmgtJJ7cw", "DNEmgtJJ7cw", 52, false, "/downloads/DEMA SEWING MACHINE AUTOMATION/2025-06-20 Automated Overlock ⧸ Serger Industrial Sewing/Automated Overlock ⧸ Serger Industrial Sewing [DNEmgtJJ7cw].mp4", false, 6, ~U[2025-06-20 15:05:57Z]] 07:55:56.815 [debug] QUERY OK source="sources" db=0.3ms idle=3.7ms UPDATE "sources" SET "last_indexed_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2025-12-24 07:55:56Z], ~U[2025-12-24 07:55:56Z], 6] 07:55:56.816 [debug] QUERY OK source="media_items" db=0.8ms 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 ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 07:55:56.817 [debug] QUERY OK source="media_items" db=0.8ms idle=3.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] 07:55:56.818 [debug] QUERY OK source="media_items" db=0.4ms idle=4.0ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [6] 07:55:56.820 [debug] QUERY OK source="tasks" db=0.3ms idle=3.1ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [7418, 6, ~U[2025-12-24 07:55:56Z], ~U[2025-12-24 07:55:56Z]] 07:55:56.820 [info] {"args":{"id":6},"id":7402,"meta":{},"state":"success","max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","duration":18978332,"event":"job:stop","queue_time":634156,"attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 07:56:00.806 [info] {"source":"oban","duration":293,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:56:21.612 [info] {"source":"oban","duration":2159,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:56:51.614 [info] {"source":"oban","duration":997,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:57:00.808 [info] {"source":"oban","duration":490,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:57:21.616 [info] {"source":"oban","duration":1411,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:57:51.618 [info] {"source":"oban","duration":1297,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:58:00.810 [info] {"source":"oban","duration":1228,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:58:21.620 [info] {"source":"oban","duration":1136,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:58:51.623 [info] {"source":"oban","duration":1590,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:59:00.811 [info] {"source":"oban","duration":638,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 07:59:21.625 [info] {"source":"oban","duration":1056,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 07:59:51.627 [info] {"source":"oban","duration":1423,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:00:00.813 [info] {"source":"oban","duration":1022,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:00:21.629 [info] {"source":"oban","duration":1515,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:00:51.631 [info] {"source":"oban","duration":1662,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:01:00.815 [info] {"source":"oban","duration":682,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:01:21.633 [info] {"source":"oban","duration":1482,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:01:51.636 [info] {"source":"oban","duration":1303,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:02:00.816 [info] {"source":"oban","duration":795,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:02:21.638 [info] {"source":"oban","duration":1062,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:02:51.640 [info] {"source":"oban","duration":1672,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:03:00.818 [info] {"source":"oban","duration":754,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:03:21.642 [info] {"source":"oban","duration":1251,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:03:51.644 [info] {"source":"oban","duration":1453,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:04:00.820 [info] {"source":"oban","duration":490,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:04:21.646 [info] {"source":"oban","duration":833,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:04:51.648 [info] {"source":"oban","duration":1416,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":1} 08:05:00.822 [info] {"source":"oban","duration":834,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:05:21.651 [info] {"source":"oban","duration":1621,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:05:51.652 [info] {"source":"oban","duration":1009,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:06:00.823 [info] {"source":"oban","duration":352,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:06:21.654 [info] {"source":"oban","duration":875,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:06:51.656 [info] {"source":"oban","duration":1481,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:07:00.824 [info] {"source":"oban","duration":353,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:07:21.659 [info] {"source":"oban","duration":953,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:07:51.661 [info] {"source":"oban","duration":895,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:08:00.825 [info] {"source":"oban","duration":231,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:08:21.663 [info] {"source":"oban","duration":1104,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:08:51.665 [info] {"source":"oban","duration":1076,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:09:00.826 [info] {"source":"oban","duration":262,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:09:21.667 [info] {"source":"oban","duration":816,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:09:51.670 [info] {"source":"oban","duration":1811,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":1} 08:10:00.827 [info] {"source":"oban","duration":221,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:10:21.672 [info] {"source":"oban","duration":1323,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:10:51.674 [info] {"source":"oban","duration":1624,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:11:00.829 [info] {"source":"oban","duration":911,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:11:21.677 [info] {"source":"oban","duration":1298,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:11:51.678 [info] {"source":"oban","duration":1614,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:12:00.830 [info] {"source":"oban","duration":411,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:12:21.680 [info] {"source":"oban","duration":1367,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:12:51.682 [info] {"source":"oban","duration":1380,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:13:00.832 [info] {"source":"oban","duration":1137,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:13:21.684 [info] {"source":"oban","duration":1266,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:13:51.686 [info] {"source":"oban","duration":1137,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:14:00.833 [info] {"source":"oban","duration":233,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:14:21.688 [info] {"source":"oban","duration":1093,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:14:51.690 [info] {"source":"oban","duration":993,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:15:00.835 [info] {"source":"oban","duration":491,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:15:21.692 [info] {"source":"oban","duration":964,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:15:51.695 [info] {"source":"oban","duration":1365,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:16:00.837 [info] {"source":"oban","duration":849,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:16:21.696 [info] {"source":"oban","duration":995,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:16:51.698 [info] {"source":"oban","duration":726,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:17:00.839 [info] {"source":"oban","duration":532,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:17:21.700 [info] {"source":"oban","duration":975,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:17:51.702 [info] {"source":"oban","duration":902,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:18:00.840 [info] {"source":"oban","duration":268,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:18:21.705 [info] {"source":"oban","duration":1159,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:18:51.707 [info] {"source":"oban","duration":1529,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:19:00.842 [info] {"source":"oban","duration":639,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:19:21.709 [info] {"source":"oban","duration":1230,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:19:51.711 [info] {"source":"oban","duration":872,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:20:00.843 [info] {"source":"oban","duration":312,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:20:21.713 [info] {"source":"oban","duration":1372,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:20:51.715 [info] {"source":"oban","duration":1242,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:21:00.845 [info] {"source":"oban","duration":576,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:21:21.717 [info] {"source":"oban","duration":1183,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:21:51.719 [info] {"source":"oban","duration":721,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:22:00.846 [info] {"source":"oban","duration":419,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:22:21.720 [info] {"source":"oban","duration":1330,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:22:51.722 [info] {"source":"oban","duration":982,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:23:00.848 [info] {"source":"oban","duration":1051,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:23:21.724 [info] {"source":"oban","duration":1092,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:23:51.726 [info] {"source":"oban","duration":745,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:24:00.849 [info] {"source":"oban","duration":339,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:24:21.727 [info] {"source":"oban","duration":839,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:24:51.729 [info] {"source":"oban","duration":1284,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:25:00.851 [info] {"source":"oban","duration":450,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:25:21.731 [info] {"source":"oban","duration":1117,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:25:51.733 [info] {"source":"oban","duration":1353,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:26:00.852 [info] {"source":"oban","duration":654,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:26:21.735 [info] {"source":"oban","duration":1014,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:26:51.738 [info] {"source":"oban","duration":1821,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:27:00.855 [info] {"source":"oban","duration":397,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:27:21.740 [info] {"source":"oban","duration":1469,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:27:22.902 [info] {"args":{"id":3},"id":7403,"meta":{},"system_time":1766564842902684720,"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"]} 08:27:22.903 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=1460.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] 08:27:22.903 [debug] QUERY OK source="settings" db=0.2ms idle=1162.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:27:22.905 [debug] QUERY OK source="media_items" db=1.1ms idle=1011.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")))) [3] 08:27:22.905 [debug] QUERY OK source="media_items" db=0.3ms idle=10.0ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [3] 08:27:22.905 [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] 08:27:22.906 [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 [] 08:27:22.906 [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 [] 08:27:22.908 [debug] QUERY OK source="media_items" db=1.0ms idle=2.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."source_id" = ?) ORDER BY m0."uploaded_at" DESC LIMIT 50 OFFSET 20 [3] 08:27:22.909 [debug] Running yt-dlp command for action: get_media_attributes_for_collection 08:27:22.909 [debug] Current batch of media processed. Will check again in 1000ms 08:27:22.909 [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 [] 08:27:22.910 [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 [] 08:27:22.910 [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 [] 08:27:22.910 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@Factory_Monster --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/Factory_Monster/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/56/b7/56b7f407e7fde8368b2a4835b263b4df8f9c0d452306f47b6052aceb69dac738.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/ac/bd/acbd20b4f9b6e1f21ffd5b988e75571e8992581b7763bad6643520a2774d5ce3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 08:27:23.910 [debug] Current batch of media processed. Will check again in 1000ms 08:27:24.911 [debug] Current batch of media processed. Will check again in 1000ms 08:27:25.912 [debug] Current batch of media processed. Will check again in 1000ms 08:27:26.913 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Handcrafted Sheepskin Jacket by a Master Artisan With 50 Years of Legacy\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://smartstore.naver.com/northbeach1987 (North Beach)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 759, "filename" => "/downloads/Factory_Monster/2025-12-17 Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy/Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy [knlnR0qsLHc].mkv", "id" => "knlnR0qsLHc", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=knlnR0qsLHc", "playlist_index" => 1, "timestamp" => 1765971053, "title" => "Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy", "upload_date" => "20251217"} 08:27:26.914 [debug] QUERY OK source="sources" db=0.2ms idle=471.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] 08:27:26.914 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=471.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:26.915 [debug] QUERY OK source="media_items" db=0.5ms idle=472.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-17 11:30:53Z], 3] 08:27:26.916 [debug] QUERY OK source="media_items" db=0.6ms idle=473.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Handcrafted Sheepskin Jacket by a Master Artisan With 50 Years of Legacy\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://smartstore.naver.com/northbeach1987 (North Beach)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy", "5595ccbe-3477-4b71-ac11-064d3db8cdb0", "https://www.youtube.com/watch?v=knlnR0qsLHc", "knlnR0qsLHc", false, 759, false, 1, "/downloads/Factory_Monster/2025-12-17 Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy/Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy [knlnR0qsLHc].mkv", false, false, 3, [], 98, ~U[2025-12-17 11:30:53Z], ~U[2025-12-24 08:27:26Z], ~U[2025-12-24 08:27:26Z], "Handcrafted Sheepskin Jacket by a Master Artisan With 50 Years of Legacy\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://smartstore.naver.com/northbeach1987 (North Beach)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy", "https://www.youtube.com/watch?v=knlnR0qsLHc", "knlnR0qsLHc", 759, false, "/downloads/Factory_Monster/2025-12-17 Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy/Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy [knlnR0qsLHc].mkv", false, 3, ~U[2025-12-17 11:30:53Z]] 08:27:26.916 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [3] 08:27:26.917 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=2.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:27:26.918 [debug] QUERY OK source="media_items" db=0.3ms 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 [27576] 08:27:26.918 [debug] Current batch of media processed. Will check again in 1000ms 08:27:27.919 [debug] Current batch of media processed. Will check again in 1000ms 08:27:28.920 [debug] Current batch of media processed. Will check again in 1000ms 08:27:29.921 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "The Incredible Process of Weaving Shading Nets in a Korean Factory\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/4frTRXq (가야테크)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 651, "filename" => "/downloads/Factory_Monster/2025-12-12 The Incredible Process of Weaving Shading Nets in a Korean Factory/The Incredible Process of Weaving Shading Nets in a Korean Factory [ObPvvMs2bkI].mkv", "id" => "ObPvvMs2bkI", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=ObPvvMs2bkI", "playlist_index" => 2, "timestamp" => 1765532703, "title" => "The Incredible Process of Weaving Shading Nets in a Korean Factory", "upload_date" => "20251212"} 08:27:29.922 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1479.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] 08:27:29.922 [debug] QUERY OK source="sources" db=0.1ms idle=1479.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:29.923 [debug] QUERY OK source="media_items" db=0.6ms idle=1480.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-12 09:45:03Z], 3] 08:27:29.924 [debug] QUERY OK source="media_items" db=0.6ms idle=1016.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Incredible Process of Weaving Shading Nets in a Korean Factory\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/4frTRXq (가야테크)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "The Incredible Process of Weaving Shading Nets in a Korean Factory", "f1db6aba-ea30-4990-be1d-1401b62a7c07", "https://www.youtube.com/watch?v=ObPvvMs2bkI", "ObPvvMs2bkI", false, 651, false, 2, "/downloads/Factory_Monster/2025-12-12 The Incredible Process of Weaving Shading Nets in a Korean Factory/The Incredible Process of Weaving Shading Nets in a Korean Factory [ObPvvMs2bkI].mkv", false, false, 3, [], 98, ~U[2025-12-12 09:45:03Z], ~U[2025-12-24 08:27:29Z], ~U[2025-12-24 08:27:29Z], "The Incredible Process of Weaving Shading Nets in a Korean Factory\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/4frTRXq (가야테크)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "The Incredible Process of Weaving Shading Nets in a Korean Factory", "https://www.youtube.com/watch?v=ObPvvMs2bkI", "ObPvvMs2bkI", 651, false, "/downloads/Factory_Monster/2025-12-12 The Incredible Process of Weaving Shading Nets in a Korean Factory/The Incredible Process of Weaving Shading Nets in a Korean Factory [ObPvvMs2bkI].mkv", false, 3, ~U[2025-12-12 09:45:03Z]] 08:27:29.925 [debug] QUERY OK source="sources" db=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" = ?) [3] 08:27:29.925 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=3.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:27:29.926 [debug] QUERY OK source="media_items" db=0.2ms 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 [26192] 08:27:29.926 [debug] Current batch of media processed. Will check again in 1000ms 08:27:30.927 [debug] Current batch of media processed. Will check again in 1000ms 08:27:31.928 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Kitchen Faucet Mass Production in Korea\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/4gjiMO3\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 702, "filename" => "/downloads/Factory_Monster/2025-12-06 Kitchen Faucet Mass Production in Korea/Kitchen Faucet Mass Production in Korea [KR7UmQUMpyY].mkv", "id" => "KR7UmQUMpyY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=KR7UmQUMpyY", "playlist_index" => 3, "timestamp" => 1765013412, "title" => "Kitchen Faucet Mass Production in Korea", "upload_date" => "20251206"} 08:27:31.929 [debug] QUERY OK source="sources" db=0.2ms idle=486.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:31.929 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=486.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:31.930 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=487.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-06 09:30:12Z], 3] 08:27:31.931 [debug] QUERY OK source="media_items" db=0.6ms idle=488.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Kitchen Faucet Mass Production in Korea\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/4gjiMO3\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Kitchen Faucet Mass Production in Korea", "8a7d6295-eb3d-4b22-9735-b1433a3ce71a", "https://www.youtube.com/watch?v=KR7UmQUMpyY", "KR7UmQUMpyY", false, 702, false, 3, "/downloads/Factory_Monster/2025-12-06 Kitchen Faucet Mass Production in Korea/Kitchen Faucet Mass Production in Korea [KR7UmQUMpyY].mkv", false, false, 3, [], 98, ~U[2025-12-06 09:30:12Z], ~U[2025-12-24 08:27:31Z], ~U[2025-12-24 08:27:31Z], "Kitchen Faucet Mass Production in Korea\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/4gjiMO3\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Kitchen Faucet Mass Production in Korea", "https://www.youtube.com/watch?v=KR7UmQUMpyY", "KR7UmQUMpyY", 702, false, "/downloads/Factory_Monster/2025-12-06 Kitchen Faucet Mass Production in Korea/Kitchen Faucet Mass Production in Korea [KR7UmQUMpyY].mkv", false, 3, ~U[2025-12-06 09:30:12Z]] 08:27:31.932 [debug] QUERY OK source="sources" db=0.1ms idle=15.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 08:27:31.932 [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] 08:27:31.932 [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 [23589] 08:27:31.933 [debug] Current batch of media processed. Will check again in 1000ms 08:27:32.934 [debug] Current batch of media processed. Will check again in 1000ms 08:27:33.935 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed\n\n*This video does not contain any paid promotion*\n\n00:00 Motor Production\n08:22 Fastener Production\n18:44 Fence Production\n28:27 Aluminum Profile Production\n\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 2263, "filename" => "/downloads/Factory_Monster/2025-12-02 【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed/【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed [TiuOtBGzrK4].mkv", "id" => "TiuOtBGzrK4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=TiuOtBGzrK4", "playlist_index" => 4, "timestamp" => 1764676857, "title" => "【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed", "upload_date" => "20251202"} 08:27:33.935 [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" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [3] 08:27:33.936 [debug] QUERY OK source="sources" db=0.1ms idle=493.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] 08:27:33.937 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=493.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-02 12:00:57Z], 3] 08:27:33.938 [debug] QUERY OK source="media_items" db=0.6ms idle=494.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed\n\n*This video does not contain any paid promotion*\n\n00:00 Motor Production\n08:22 Fastener Production\n18:44 Fence Production\n28:27 Aluminum Profile Production\n\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed", "a92e8fd1-e229-46b7-84f1-1d3f827ec7ab", "https://www.youtube.com/watch?v=TiuOtBGzrK4", "TiuOtBGzrK4", false, 2263, false, 4, "/downloads/Factory_Monster/2025-12-02 【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed/【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed [TiuOtBGzrK4].mkv", false, false, 3, [], 98, ~U[2025-12-02 12:00:57Z], ~U[2025-12-24 08:27:33Z], ~U[2025-12-24 08:27:33Z], "【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed\n\n*This video does not contain any paid promotion*\n\n00:00 Motor Production\n08:22 Fastener Production\n18:44 Fence Production\n28:27 Aluminum Profile Production\n\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed", "https://www.youtube.com/watch?v=TiuOtBGzrK4", "TiuOtBGzrK4", 2263, false, "/downloads/Factory_Monster/2025-12-02 【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed/【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed [TiuOtBGzrK4].mkv", false, 3, ~U[2025-12-02 12:00:57Z]] 08:27:33.938 [debug] QUERY OK source="sources" db=0.1ms idle=17.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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:27:33.938 [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] 08:27:33.939 [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 [22838] 08:27:33.939 [debug] Current batch of media processed. Will check again in 1000ms 08:27:34.940 [debug] Current batch of media processed. Will check again in 1000ms 08:27:35.941 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Turning Giant Tree Root into a Console Table. Wood Working Master in Korea\n\n📌Product in Video: https://naver.me/Gmb20I1P (OLD HAND GALLERY)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 734, "filename" => "/downloads/Factory_Monster/2025-11-28 Turning Giant Tree Root into a Console Table. Wood Working Master in Korea/Turning Giant Tree Root into a Console Table. Wood Working Master in Korea [QvPFtNbH9gs].mkv", "id" => "QvPFtNbH9gs", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=QvPFtNbH9gs", "playlist_index" => 5, "timestamp" => 1764315904, "title" => "Turning Giant Tree Root into a Console Table. Wood Working Master in Korea", "upload_date" => "20251128"} 08:27:35.942 [debug] QUERY OK source="sources" db=0.2ms idle=499.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] 08:27:35.943 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 08:27:35.943 [debug] QUERY OK source="media_items" db=0.6ms idle=500.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-28 07:45:04Z], 3] 08:27:35.944 [debug] QUERY OK source="media_items" db=0.5ms idle=501.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Turning Giant Tree Root into a Console Table. Wood Working Master in Korea\n\n📌Product in Video: https://naver.me/Gmb20I1P (OLD HAND GALLERY)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Turning Giant Tree Root into a Console Table. Wood Working Master in Korea", "b8da48b8-4d6f-4067-8e58-77dc17b23bc7", "https://www.youtube.com/watch?v=QvPFtNbH9gs", "QvPFtNbH9gs", false, 734, false, 5, "/downloads/Factory_Monster/2025-11-28 Turning Giant Tree Root into a Console Table. Wood Working Master in Korea/Turning Giant Tree Root into a Console Table. Wood Working Master in Korea [QvPFtNbH9gs].mkv", false, false, 3, [], 98, ~U[2025-11-28 07:45:04Z], ~U[2025-12-24 08:27:35Z], ~U[2025-12-24 08:27:35Z], "Turning Giant Tree Root into a Console Table. Wood Working Master in Korea\n\n📌Product in Video: https://naver.me/Gmb20I1P (OLD HAND GALLERY)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Turning Giant Tree Root into a Console Table. Wood Working Master in Korea", "https://www.youtube.com/watch?v=QvPFtNbH9gs", "QvPFtNbH9gs", 734, false, "/downloads/Factory_Monster/2025-11-28 Turning Giant Tree Root into a Console Table. Wood Working Master in Korea/Turning Giant Tree Root into a Console Table. Wood Working Master in Korea [QvPFtNbH9gs].mkv", false, 3, ~U[2025-11-28 07:45:04Z]] 08:27:35.945 [debug] QUERY OK source="sources" db=0.1ms idle=20.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] 08:27:35.945 [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] 08:27:35.946 [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 [21895] 08:27:35.946 [debug] Current batch of media processed. Will check again in 1000ms 08:27:36.947 [debug] Current batch of media processed. Will check again in 1000ms 08:27:37.948 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Ecosystem in a House! A Man Makes Vivarium in a Living Room\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/3LvAq3i \n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 1047, "filename" => "/downloads/Factory_Monster/2025-11-14 Ecosystem in a House! A Man Makes Vivarium in a Living Room/Ecosystem in a House! A Man Makes Vivarium in a Living Room [5Rqy6y0kaoA].mkv", "id" => "5Rqy6y0kaoA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=5Rqy6y0kaoA", "playlist_index" => 6, "timestamp" => 1763112602, "title" => "Ecosystem in a House! A Man Makes Vivarium in a Living Room", "upload_date" => "20251114"} 08:27:37.949 [debug] QUERY OK source="sources" db=0.1ms idle=506.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 (?)) [3] 08:27:37.949 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 08:27:37.950 [debug] QUERY OK source="media_items" db=0.5ms idle=507.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-14 09:30:02Z], 3] 08:27:37.951 [debug] QUERY OK source="media_items" db=0.5ms idle=508.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Ecosystem in a House! A Man Makes Vivarium in a Living Room\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/3LvAq3i \n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Ecosystem in a House! A Man Makes Vivarium in a Living Room", "97a9075b-fe59-486e-bb4b-541329735cbd", "https://www.youtube.com/watch?v=5Rqy6y0kaoA", "5Rqy6y0kaoA", false, 1047, false, 6, "/downloads/Factory_Monster/2025-11-14 Ecosystem in a House! A Man Makes Vivarium in a Living Room/Ecosystem in a House! A Man Makes Vivarium in a Living Room [5Rqy6y0kaoA].mkv", false, false, 3, [], 98, ~U[2025-11-14 09:30:02Z], ~U[2025-12-24 08:27:37Z], ~U[2025-12-24 08:27:37Z], "Ecosystem in a House! A Man Makes Vivarium in a Living Room\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/3LvAq3i \n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Ecosystem in a House! A Man Makes Vivarium in a Living Room", "https://www.youtube.com/watch?v=5Rqy6y0kaoA", "5Rqy6y0kaoA", 1047, false, "/downloads/Factory_Monster/2025-11-14 Ecosystem in a House! A Man Makes Vivarium in a Living Room/Ecosystem in a House! A Man Makes Vivarium in a Living Room [5Rqy6y0kaoA].mkv", false, 3, ~U[2025-11-14 09:30:02Z]] 08:27:37.951 [debug] QUERY OK source="sources" db=0.2ms idle=22.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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:27:37.952 [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] 08:27:37.952 [debug] QUERY OK source="media_items" db=0.2ms 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 [19451] 08:27:37.952 [debug] Current batch of media processed. Will check again in 1000ms 08:27:38.953 [debug] Current batch of media processed. Will check again in 1000ms 08:27:39.955 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://jeilbearing.com (JIB)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 611, "filename" => "/downloads/Factory_Monster/2025-11-08 10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process/10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process [aO6nZa2DTgc].mkv", "id" => "aO6nZa2DTgc", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=aO6nZa2DTgc", "playlist_index" => 7, "timestamp" => 1762596004, "title" => "10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process", "upload_date" => "20251108"} 08:27:39.955 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=513.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] 08:27:39.956 [debug] QUERY OK source="sources" db=0.3ms idle=513.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:39.957 [debug] QUERY OK source="media_items" db=0.7ms idle=514.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-08 10:00:04Z], 3] 08:27:39.958 [debug] QUERY OK source="media_items" db=0.7ms idle=515.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://jeilbearing.com (JIB)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process", "04811339-ed30-436d-9287-e1d9fcf2614a", "https://www.youtube.com/watch?v=aO6nZa2DTgc", "aO6nZa2DTgc", false, 611, false, 7, "/downloads/Factory_Monster/2025-11-08 10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process/10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process [aO6nZa2DTgc].mkv", false, false, 3, [], 98, ~U[2025-11-08 10:00:04Z], ~U[2025-12-24 08:27:39Z], ~U[2025-12-24 08:27:39Z], "10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://jeilbearing.com (JIB)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process", "https://www.youtube.com/watch?v=aO6nZa2DTgc", "aO6nZa2DTgc", 611, false, "/downloads/Factory_Monster/2025-11-08 10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process/10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process [aO6nZa2DTgc].mkv", false, 3, ~U[2025-11-08 10:00:04Z]] 08:27:39.959 [debug] QUERY OK source="sources" db=0.2ms idle=24.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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:27:39.959 [debug] QUERY OK source="media_profiles" db=0.3ms idle=3.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:27:39.960 [debug] QUERY OK source="media_items" db=0.3ms 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 [18312] 08:27:39.960 [debug] Current batch of media processed. Will check again in 1000ms 08:27:40.962 [debug] Current batch of media processed. Will check again in 1000ms 08:27:41.964 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Huge Creature Grooming Master in Korea\n\n*This video does not contain any paid promotion*\n\n00:00 Big\n09:34 Small\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 1221, "filename" => "/downloads/Factory_Monster/2025-11-02 Huge Creature Grooming Master in Korea/Huge Creature Grooming Master in Korea [KLHZgtLjIzA].mkv", "id" => "KLHZgtLjIzA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=KLHZgtLjIzA", "playlist_index" => 8, "timestamp" => 1762065010, "title" => "Huge Creature Grooming Master in Korea", "upload_date" => "20251102"} 08:27:41.964 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=521.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:41.965 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=522.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:41.966 [debug] QUERY OK source="media_items" db=0.6ms idle=523.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-02 06:30:10Z], 3] 08:27:41.967 [debug] QUERY OK source="media_items" db=0.7ms idle=524.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Huge Creature Grooming Master in Korea\n\n*This video does not contain any paid promotion*\n\n00:00 Big\n09:34 Small\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Huge Creature Grooming Master in Korea", "cb4d964c-785d-4a15-8114-42c8dc4c60ab", "https://www.youtube.com/watch?v=KLHZgtLjIzA", "KLHZgtLjIzA", false, 1221, false, 8, "/downloads/Factory_Monster/2025-11-02 Huge Creature Grooming Master in Korea/Huge Creature Grooming Master in Korea [KLHZgtLjIzA].mkv", false, false, 3, [], 98, ~U[2025-11-02 06:30:10Z], ~U[2025-12-24 08:27:41Z], ~U[2025-12-24 08:27:41Z], "Huge Creature Grooming Master in Korea\n\n*This video does not contain any paid promotion*\n\n00:00 Big\n09:34 Small\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Huge Creature Grooming Master in Korea", "https://www.youtube.com/watch?v=KLHZgtLjIzA", "KLHZgtLjIzA", 1221, false, "/downloads/Factory_Monster/2025-11-02 Huge Creature Grooming Master in Korea/Huge Creature Grooming Master in Korea [KLHZgtLjIzA].mkv", false, 3, ~U[2025-11-02 06:30:10Z]] 08:27:41.968 [debug] QUERY OK source="sources" db=0.3ms idle=30.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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:27:41.968 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:27:41.969 [debug] QUERY OK source="media_items" db=0.2ms 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 [16982] 08:27:41.969 [debug] Current batch of media processed. Will check again in 1000ms 08:27:42.970 [debug] Current batch of media processed. Will check again in 1000ms 08:27:43.971 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory\n\n*This video does not contain any paid promotion*\n\n00:00 Sweaters & Knitwear\n12:52 Towel Production\n20:42 Muffler Production\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#factory", "duration" => 1729, "filename" => "/downloads/Factory_Monster/2025-10-29 How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory/How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory [BBPI6pIgPkE].mkv", "id" => "BBPI6pIgPkE", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=BBPI6pIgPkE", "playlist_index" => 9, "timestamp" => 1761732029, "title" => "How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory", "upload_date" => "20251029"} 08:27:43.972 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=529.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] 08:27:43.972 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=530.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:43.973 [debug] QUERY OK source="media_items" db=0.6ms idle=530.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-29 10:00:29Z], 3] 08:27:43.975 [debug] QUERY OK source="media_items" db=1.1ms idle=531.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory\n\n*This video does not contain any paid promotion*\n\n00:00 Sweaters & Knitwear\n12:52 Towel Production\n20:42 Muffler Production\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#factory", "How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory", "60ddff1c-5911-4e7a-91ae-0776dd4c4635", "https://www.youtube.com/watch?v=BBPI6pIgPkE", "BBPI6pIgPkE", false, 1729, false, 9, "/downloads/Factory_Monster/2025-10-29 How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory/How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory [BBPI6pIgPkE].mkv", false, false, 3, [], 98, ~U[2025-10-29 10:00:29Z], ~U[2025-12-24 08:27:43Z], ~U[2025-12-24 08:27:43Z], "How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory\n\n*This video does not contain any paid promotion*\n\n00:00 Sweaters & Knitwear\n12:52 Towel Production\n20:42 Muffler Production\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#factory", "How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory", "https://www.youtube.com/watch?v=BBPI6pIgPkE", "BBPI6pIgPkE", 1729, false, "/downloads/Factory_Monster/2025-10-29 How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory/How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory [BBPI6pIgPkE].mkv", false, 3, ~U[2025-10-29 10:00:29Z]] 08:27:43.975 [debug] QUERY OK source="sources" db=0.2ms idle=33.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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:27:43.975 [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] 08:27:43.976 [debug] QUERY OK source="media_items" db=0.2ms 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 [16412] 08:27:43.976 [debug] Current batch of media processed. Will check again in 1000ms 08:27:44.977 [debug] Current batch of media processed. Will check again in 1000ms 08:27:45.978 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "The Incredible Process of Turning Raw Plastic into Colorful Food Containers\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://shop.tupperware.co.kr (TUPPERWARE)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 608, "filename" => "/downloads/Factory_Monster/2025-10-25 The Incredible Process of Turning Raw Plastic into Colorful Food Containers/The Incredible Process of Turning Raw Plastic into Colorful Food Containers [obPa9dTqax0].mkv", "id" => "obPa9dTqax0", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=obPa9dTqax0", "playlist_index" => 10, "timestamp" => 1761375653, "title" => "The Incredible Process of Turning Raw Plastic into Colorful Food Containers", "upload_date" => "20251025"} 08:27:45.979 [debug] QUERY OK source="sources" db=0.2ms idle=536.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] 08:27:45.980 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=537.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:45.980 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=537.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-25 07:00:53Z], 3] 08:27:45.982 [debug] QUERY OK source="media_items" db=0.6ms idle=538.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Incredible Process of Turning Raw Plastic into Colorful Food Containers\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://shop.tupperware.co.kr (TUPPERWARE)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "The Incredible Process of Turning Raw Plastic into Colorful Food Containers", "95fdb4ae-d169-4035-8ea5-2459e143b901", "https://www.youtube.com/watch?v=obPa9dTqax0", "obPa9dTqax0", false, 608, false, 10, "/downloads/Factory_Monster/2025-10-25 The Incredible Process of Turning Raw Plastic into Colorful Food Containers/The Incredible Process of Turning Raw Plastic into Colorful Food Containers [obPa9dTqax0].mkv", false, false, 3, [], 98, ~U[2025-10-25 07:00:53Z], ~U[2025-12-24 08:27:45Z], ~U[2025-12-24 08:27:45Z], "The Incredible Process of Turning Raw Plastic into Colorful Food Containers\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://shop.tupperware.co.kr (TUPPERWARE)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "The Incredible Process of Turning Raw Plastic into Colorful Food Containers", "https://www.youtube.com/watch?v=obPa9dTqax0", "obPa9dTqax0", 608, false, "/downloads/Factory_Monster/2025-10-25 The Incredible Process of Turning Raw Plastic into Colorful Food Containers/The Incredible Process of Turning Raw Plastic into Colorful Food Containers [obPa9dTqax0].mkv", false, 3, ~U[2025-10-25 07:00:53Z]] 08:27:45.982 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=36.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] 08:27:45.983 [debug] QUERY OK source="media_profiles" db=0.2ms queue=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] 08:27:45.983 [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 [15462] 08:27:45.983 [debug] Current batch of media processed. Will check again in 1000ms 08:27:46.984 [debug] Current batch of media processed. Will check again in 1000ms 08:27:47.985 [debug] Current batch of media processed. Will check again in 1000ms 08:27:48.986 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "How Giant Mining Drills Are Mass Produced with Expert Engineering\n\n*This video does not contain any paid promotion*\n\n00:00 Rock Tools\n10:39 Giant Rock Tool\n20:07 Excavator Grapple\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#factory", "duration" => 1829, "filename" => "/downloads/Factory_Monster/2025-10-18 How Giant Mining Drills Are Mass Produced with Expert Engineering/How Giant Mining Drills Are Mass Produced with Expert Engineering [ZTcL-tL3EG8].mkv", "id" => "ZTcL-tL3EG8", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=ZTcL-tL3EG8", "playlist_index" => 11, "timestamp" => 1760778048, "title" => "How Giant Mining Drills Are Mass Produced with Expert Engineering", "upload_date" => "20251018"} 08:27:48.987 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1544.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:48.987 [debug] QUERY OK source="sources" db=0.2ms idle=1544.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] 08:27:48.988 [debug] QUERY OK source="media_items" db=0.5ms idle=1545.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-18 09:00:48Z], 3] 08:27:48.989 [debug] QUERY OK source="media_items" db=0.6ms idle=1039.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["How Giant Mining Drills Are Mass Produced with Expert Engineering\n\n*This video does not contain any paid promotion*\n\n00:00 Rock Tools\n10:39 Giant Rock Tool\n20:07 Excavator Grapple\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#factory", "How Giant Mining Drills Are Mass Produced with Expert Engineering", "70439bb8-8db8-4eb1-a3b7-e54b124e7704", "https://www.youtube.com/watch?v=ZTcL-tL3EG8", "ZTcL-tL3EG8", false, 1829, false, 11, "/downloads/Factory_Monster/2025-10-18 How Giant Mining Drills Are Mass Produced with Expert Engineering/How Giant Mining Drills Are Mass Produced with Expert Engineering [ZTcL-tL3EG8].mkv", false, false, 3, [], 98, ~U[2025-10-18 09:00:48Z], ~U[2025-12-24 08:27:48Z], ~U[2025-12-24 08:27:48Z], "How Giant Mining Drills Are Mass Produced with Expert Engineering\n\n*This video does not contain any paid promotion*\n\n00:00 Rock Tools\n10:39 Giant Rock Tool\n20:07 Excavator Grapple\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#factory", "How Giant Mining Drills Are Mass Produced with Expert Engineering", "https://www.youtube.com/watch?v=ZTcL-tL3EG8", "ZTcL-tL3EG8", 1829, false, "/downloads/Factory_Monster/2025-10-18 How Giant Mining Drills Are Mass Produced with Expert Engineering/How Giant Mining Drills Are Mass Produced with Expert Engineering [ZTcL-tL3EG8].mkv", false, 3, ~U[2025-10-18 09:00:48Z]] 08:27:48.989 [debug] QUERY OK source="sources" db=0.1ms idle=38.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] 08:27:48.990 [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] 08:27:48.990 [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 [14297] 08:27:48.990 [debug] Current batch of media processed. Will check again in 1000ms 08:27:49.991 [debug] Current batch of media processed. Will check again in 1000ms 08:27:50.992 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory\n\n00:00 Manhole Covers\n11:00 Valves\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#Metal recycling #Manhole #Factory", "duration" => 1645, "filename" => "/downloads/Factory_Monster/2025-10-11 Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory/Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory [6j2F5BdMiQ8].mkv", "id" => "6j2F5BdMiQ8", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=6j2F5BdMiQ8", "playlist_index" => 12, "timestamp" => 1760181300, "title" => "Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory", "upload_date" => "20251011"} 08:27:50.993 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms 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 (?)) [3] 08:27:50.994 [debug] QUERY OK source="sources" db=0.1ms idle=551.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] 08:27:50.995 [debug] QUERY OK source="media_items" db=0.6ms idle=551.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-11 11:15:00Z], 3] 08:27:50.996 [debug] QUERY OK source="media_items" db=0.6ms idle=552.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory\n\n00:00 Manhole Covers\n11:00 Valves\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#Metal recycling #Manhole #Factory", "Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory", "5744389a-8be1-401c-b89b-39af1993e623", "https://www.youtube.com/watch?v=6j2F5BdMiQ8", "6j2F5BdMiQ8", false, 1645, false, 12, "/downloads/Factory_Monster/2025-10-11 Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory/Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory [6j2F5BdMiQ8].mkv", false, false, 3, [], 98, ~U[2025-10-11 11:15:00Z], ~U[2025-12-24 08:27:50Z], ~U[2025-12-24 08:27:50Z], "Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory\n\n00:00 Manhole Covers\n11:00 Valves\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#Metal recycling #Manhole #Factory", "Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory", "https://www.youtube.com/watch?v=6j2F5BdMiQ8", "6j2F5BdMiQ8", 1645, false, "/downloads/Factory_Monster/2025-10-11 Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory/Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory [6j2F5BdMiQ8].mkv", false, 3, ~U[2025-10-11 11:15:00Z]] 08:27:50.996 [debug] QUERY OK source="sources" db=0.1ms idle=40.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] 08:27:50.996 [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] 08:27:50.997 [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 [12971] 08:27:50.997 [debug] Current batch of media processed. Will check again in 1000ms 08:27:51.743 [info] {"source":"oban","duration":1817,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:27:51.998 [debug] Current batch of media processed. Will check again in 1000ms 08:27:53.000 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://volvikmall.com (Volvik)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 818, "filename" => "/downloads/Factory_Monster/2025-10-07 How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets/How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets [mOd250yOT2M].mkv", "id" => "mOd250yOT2M", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=mOd250yOT2M", "playlist_index" => 13, "timestamp" => 1759841865, "title" => "How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets", "upload_date" => "20251007"} 08:27:53.000 [debug] QUERY OK source="sources" db=0.2ms queue=0.2ms idle=1042.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:53.001 [debug] QUERY OK source="sources" db=0.2ms idle=558.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:53.002 [debug] QUERY OK source="media_items" db=0.7ms idle=559.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-07 12:57:45Z], 3] 08:27:53.003 [debug] QUERY OK source="media_items" db=0.6ms idle=560.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://volvikmall.com (Volvik)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets", "b7662ac8-ae69-4ba0-8671-bcc2e98717d5", "https://www.youtube.com/watch?v=mOd250yOT2M", "mOd250yOT2M", false, 818, false, 13, "/downloads/Factory_Monster/2025-10-07 How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets/How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets [mOd250yOT2M].mkv", false, false, 3, [], 98, ~U[2025-10-07 12:57:45Z], ~U[2025-12-24 08:27:53Z], ~U[2025-12-24 08:27:53Z], "How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://volvikmall.com (Volvik)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets", "https://www.youtube.com/watch?v=mOd250yOT2M", "mOd250yOT2M", 818, false, "/downloads/Factory_Monster/2025-10-07 How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets/How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets [mOd250yOT2M].mkv", false, 3, ~U[2025-10-07 12:57:45Z]] 08:27:53.004 [debug] QUERY OK source="sources" db=0.2ms idle=43.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] 08:27:53.004 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=3.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:27:53.005 [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 [12235] 08:27:53.005 [debug] Current batch of media processed. Will check again in 1000ms 08:27:54.006 [debug] Current batch of media processed. Will check again in 1000ms 08:27:55.008 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology\n\n*This video does not contain any paid promotion*\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 2089, "filename" => "/downloads/Factory_Monster/2025-10-03 How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology/How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology [i-m4APD3d44].mkv", "id" => "i-m4APD3d44", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=i-m4APD3d44", "playlist_index" => 14, "timestamp" => 1759492884, "title" => "How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology", "upload_date" => "20251003"} 08:27:55.009 [debug] QUERY OK source="sources" db=0.2ms idle=566.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:55.009 [debug] QUERY OK source="sources" db=0.2ms idle=566.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] 08:27:55.010 [debug] QUERY OK source="media_items" db=0.6ms idle=566.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-03 12:01:24Z], 3] 08:27:55.011 [debug] QUERY OK source="media_items" db=0.6ms idle=567.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology\n\n*This video does not contain any paid promotion*\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology", "d6a17c1f-bb13-4f98-ae48-bf2a7ed3d3f4", "https://www.youtube.com/watch?v=i-m4APD3d44", "i-m4APD3d44", false, 2089, false, 14, "/downloads/Factory_Monster/2025-10-03 How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology/How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology [i-m4APD3d44].mkv", false, false, 3, [], 98, ~U[2025-10-03 12:01:24Z], ~U[2025-12-24 08:27:55Z], ~U[2025-12-24 08:27:55Z], "How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology\n\n*This video does not contain any paid promotion*\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology", "https://www.youtube.com/watch?v=i-m4APD3d44", "i-m4APD3d44", 2089, false, "/downloads/Factory_Monster/2025-10-03 How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology/How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology [i-m4APD3d44].mkv", false, 3, ~U[2025-10-03 12:01:24Z]] 08:27:55.011 [debug] QUERY OK source="sources" db=0.2ms idle=48.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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:27:55.012 [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] 08:27:55.012 [debug] QUERY OK source="media_items" db=0.3ms queue=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 [11511] 08:27:55.012 [debug] Current batch of media processed. Will check again in 1000ms 08:27:56.014 [debug] Current batch of media processed. Will check again in 1000ms 08:27:57.015 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://www.instagram.com/guinongkr (GUINONG)\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 606, "filename" => "/downloads/Factory_Monster/2025-09-13 Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags/Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags [hI7m7LmEIuE].mkv", "id" => "hI7m7LmEIuE", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=hI7m7LmEIuE", "playlist_index" => 15, "timestamp" => 1757752219, "title" => "Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags", "upload_date" => "20250913"} 08:27:57.016 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=573.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:57.016 [debug] QUERY OK source="sources" db=0.1ms idle=573.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:57.017 [debug] QUERY OK source="media_items" db=0.6ms idle=574.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-13 08:30:19Z], 3] 08:27:57.018 [debug] QUERY OK source="media_items" db=0.7ms idle=575.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://www.instagram.com/guinongkr (GUINONG)\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags", "c8cd0de4-3daa-43b6-995a-819b161fcd25", "https://www.youtube.com/watch?v=hI7m7LmEIuE", "hI7m7LmEIuE", false, 606, false, 15, "/downloads/Factory_Monster/2025-09-13 Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags/Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags [hI7m7LmEIuE].mkv", false, false, 3, [], 98, ~U[2025-09-13 08:30:19Z], ~U[2025-12-24 08:27:57Z], ~U[2025-12-24 08:27:57Z], "Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://www.instagram.com/guinongkr (GUINONG)\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags", "https://www.youtube.com/watch?v=hI7m7LmEIuE", "hI7m7LmEIuE", 606, false, "/downloads/Factory_Monster/2025-09-13 Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags/Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags [hI7m7LmEIuE].mkv", false, 3, ~U[2025-09-13 08:30:19Z]] 08:27:57.019 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [3] 08:27:57.019 [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] 08:27:57.019 [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 [7974] 08:27:57.020 [debug] Current batch of media processed. Will check again in 1000ms 08:27:58.020 [debug] Current batch of media processed. Will check again in 1000ms 08:27:59.021 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftmanship\n\n00:00 Simpsons Rug\n12:27 Kpop Demon Hunters Derpy Rug\n37:06 Squid Game Rug\n\n📌Mook Studio Youtube: https://bit.ly/3VFfQlr\n📌Mook Studio Instagram: https://bit.ly/3VBqidM\n📌Contact: factorymonster2021@gmail.com\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#rug #tufting #character", "duration" => 3486, "filename" => "/downloads/Factory_Monster/2025-09-10 The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship/The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship [UikdQfJnfIQ].mkv", "id" => "UikdQfJnfIQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=UikdQfJnfIQ", "playlist_index" => 16, "timestamp" => 1757512267, "title" => "The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship", "upload_date" => "20250910"} 08:27:59.022 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms 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 (?)) [3] 08:27:59.023 [debug] QUERY OK source="sources" db=0.3ms idle=580.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:27:59.024 [debug] QUERY OK source="media_items" db=0.6ms idle=580.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-10 13:51:07Z], 3] 08:27:59.025 [debug] QUERY OK source="media_items" db=1.3ms idle=581.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftmanship\n\n00:00 Simpsons Rug\n12:27 Kpop Demon Hunters Derpy Rug\n37:06 Squid Game Rug\n\n📌Mook Studio Youtube: https://bit.ly/3VFfQlr\n📌Mook Studio Instagram: https://bit.ly/3VBqidM\n📌Contact: factorymonster2021@gmail.com\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#rug #tufting #character", "The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship", "3a0da33d-080b-45af-813e-ab7acc9095dd", "https://www.youtube.com/watch?v=UikdQfJnfIQ", "UikdQfJnfIQ", false, 3486, false, 16, "/downloads/Factory_Monster/2025-09-10 The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship/The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship [UikdQfJnfIQ].mkv", false, false, 3, [], 98, ~U[2025-09-10 13:51:07Z], ~U[2025-12-24 08:27:59Z], ~U[2025-12-24 08:27:59Z], "The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftmanship\n\n00:00 Simpsons Rug\n12:27 Kpop Demon Hunters Derpy Rug\n37:06 Squid Game Rug\n\n📌Mook Studio Youtube: https://bit.ly/3VFfQlr\n📌Mook Studio Instagram: https://bit.ly/3VBqidM\n📌Contact: factorymonster2021@gmail.com\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#rug #tufting #character", "The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship", "https://www.youtube.com/watch?v=UikdQfJnfIQ", "UikdQfJnfIQ", 3486, false, "/downloads/Factory_Monster/2025-09-10 The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship/The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship [UikdQfJnfIQ].mkv", false, 3, ~U[2025-09-10 13:51:07Z]] 08:27:59.026 [debug] QUERY OK source="sources" db=0.3ms idle=53.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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:27:59.026 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:27:59.027 [debug] QUERY OK source="media_items" db=0.2ms 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 [333] 08:27:59.027 [debug] Current batch of media processed. Will check again in 1000ms 08:28:00.028 [debug] Current batch of media processed. Will check again in 1000ms 08:28:00.856 [info] {"source":"oban","duration":354,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:28:01.030 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists\n\n📦Product in Video: https://understood.kr (UNDERSTOOD)\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#leather #briefcase #handmade", "duration" => 1144, "filename" => "/downloads/Factory_Monster/2025-08-28 Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists/Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists [wkV3OUVbwnU].mkv", "id" => "wkV3OUVbwnU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=wkV3OUVbwnU", "playlist_index" => 17, "timestamp" => 1756380089, "title" => "Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists", "upload_date" => "20250828"} 08:28:01.031 [debug] QUERY OK source="sources" db=0.3ms idle=588.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] 08:28:01.031 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=588.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:28:01.032 [debug] QUERY OK source="media_items" db=0.7ms idle=589.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-28 11:21:29Z], 3] 08:28:01.034 [debug] QUERY OK source="media_items" db=0.7ms idle=176.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists\n\n📦Product in Video: https://understood.kr (UNDERSTOOD)\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#leather #briefcase #handmade", "Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists", "81cf7fa6-c8f1-46b3-8875-066bdd69f27f", "https://www.youtube.com/watch?v=wkV3OUVbwnU", "wkV3OUVbwnU", false, 1144, false, 17, "/downloads/Factory_Monster/2025-08-28 Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists/Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists [wkV3OUVbwnU].mkv", false, false, 3, [], 98, ~U[2025-08-28 11:21:29Z], ~U[2025-12-24 08:28:01Z], ~U[2025-12-24 08:28:01Z], "Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists\n\n📦Product in Video: https://understood.kr (UNDERSTOOD)\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#leather #briefcase #handmade", "Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists", "https://www.youtube.com/watch?v=wkV3OUVbwnU", "wkV3OUVbwnU", 1144, false, "/downloads/Factory_Monster/2025-08-28 Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists/Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists [wkV3OUVbwnU].mkv", false, 3, ~U[2025-08-28 11:21:29Z]] 08:28:01.034 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=57.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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:28:01.035 [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] 08:28:01.035 [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 [335] 08:28:01.035 [debug] Current batch of media processed. Will check again in 1000ms 08:28:02.036 [debug] Current batch of media processed. Will check again in 1000ms 08:28:03.037 [debug] Current batch of media processed. Will check again in 1000ms 08:28:04.038 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Process of making office furniture. Korean furniture Factory\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://tofas.kr/257 (Tofas)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "duration" => 593, "filename" => "/downloads/Factory_Monster/2025-08-21 Process of making office furniture. Korean furniture Factory/Process of making office furniture. Korean furniture Factory [7j8rJKOpfLg].mkv", "id" => "7j8rJKOpfLg", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=7j8rJKOpfLg", "playlist_index" => 18, "timestamp" => 1755768603, "title" => "Process of making office furniture. Korean furniture Factory", "upload_date" => "20250821"} 08:28:04.039 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1596.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] 08:28:04.040 [debug] QUERY OK source="sources" db=0.5ms idle=1596.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:28:04.041 [debug] QUERY OK source="media_items" db=0.8ms idle=1597.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-21 09:30:03Z], 3] 08:28:04.042 [debug] QUERY OK source="media_items" db=0.9ms idle=1061.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Process of making office furniture. Korean furniture Factory\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://tofas.kr/257 (Tofas)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Process of making office furniture. Korean furniture Factory", "137a5b95-7216-4b31-b9f1-418483115b33", "https://www.youtube.com/watch?v=7j8rJKOpfLg", "7j8rJKOpfLg", false, 593, false, 18, "/downloads/Factory_Monster/2025-08-21 Process of making office furniture. Korean furniture Factory/Process of making office furniture. Korean furniture Factory [7j8rJKOpfLg].mkv", false, false, 3, [], 98, ~U[2025-08-21 09:30:03Z], ~U[2025-12-24 08:28:04Z], ~U[2025-12-24 08:28:04Z], "Process of making office furniture. Korean furniture Factory\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://tofas.kr/257 (Tofas)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Process of making office furniture. Korean furniture Factory", "https://www.youtube.com/watch?v=7j8rJKOpfLg", "7j8rJKOpfLg", 593, false, "/downloads/Factory_Monster/2025-08-21 Process of making office furniture. Korean furniture Factory/Process of making office furniture. Korean furniture Factory [7j8rJKOpfLg].mkv", false, 3, ~U[2025-08-21 09:30:03Z]] 08:28:04.043 [debug] QUERY OK source="sources" db=0.2ms idle=60.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 08:28:04.043 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:28:04.044 [debug] QUERY OK source="media_items" db=0.3ms 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 [337] 08:28:04.044 [debug] Current batch of media processed. Will check again in 1000ms 08:28:05.045 [debug] Current batch of media processed. Will check again in 1000ms 08:28:06.046 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "100% Real Stone Pot! Top 4 Craziest Factories in Korea\n\n*This video does not contain any paid promotion\n\n00:00 Real Stone Pot\n13:22 Real Wood Table\n20:59 Traditional Door\n30:26 Steel Gate\n\n📌Contact: factorymonster2021@gmail.com\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#Stone #Wood #Natural", "duration" => 2478, "filename" => "/downloads/Factory_Monster/2025-08-18 100% Real Stone Pot! Top 4 Craziest Factories in Korea/100% Real Stone Pot! Top 4 Craziest Factories in Korea [kEuOEVixYLM].mkv", "id" => "kEuOEVixYLM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=kEuOEVixYLM", "playlist_index" => 19, "timestamp" => 1755519306, "title" => "100% Real Stone Pot! Top 4 Craziest Factories in Korea", "upload_date" => "20250818"} 08:28:06.047 [debug] QUERY OK source="sources" db=0.4ms idle=604.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:28:06.048 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=605.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] 08:28:06.049 [debug] QUERY OK source="media_items" db=0.6ms idle=605.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-18 12:15:06Z], 3] 08:28:06.050 [debug] QUERY OK source="media_items" db=0.6ms idle=606.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["100% Real Stone Pot! Top 4 Craziest Factories in Korea\n\n*This video does not contain any paid promotion\n\n00:00 Real Stone Pot\n13:22 Real Wood Table\n20:59 Traditional Door\n30:26 Steel Gate\n\n📌Contact: factorymonster2021@gmail.com\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#Stone #Wood #Natural", "100% Real Stone Pot! Top 4 Craziest Factories in Korea", "1e300f37-62d8-4006-b635-1cf25e7be2c3", "https://www.youtube.com/watch?v=kEuOEVixYLM", "kEuOEVixYLM", false, 2478, false, 19, "/downloads/Factory_Monster/2025-08-18 100% Real Stone Pot! Top 4 Craziest Factories in Korea/100% Real Stone Pot! Top 4 Craziest Factories in Korea [kEuOEVixYLM].mkv", false, false, 3, [], 98, ~U[2025-08-18 12:15:06Z], ~U[2025-12-24 08:28:06Z], ~U[2025-12-24 08:28:06Z], "100% Real Stone Pot! Top 4 Craziest Factories in Korea\n\n*This video does not contain any paid promotion\n\n00:00 Real Stone Pot\n13:22 Real Wood Table\n20:59 Traditional Door\n30:26 Steel Gate\n\n📌Contact: factorymonster2021@gmail.com\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#Stone #Wood #Natural", "100% Real Stone Pot! Top 4 Craziest Factories in Korea", "https://www.youtube.com/watch?v=kEuOEVixYLM", "kEuOEVixYLM", 2478, false, "/downloads/Factory_Monster/2025-08-18 100% Real Stone Pot! Top 4 Craziest Factories in Korea/100% Real Stone Pot! Top 4 Craziest Factories in Korea [kEuOEVixYLM].mkv", false, 3, ~U[2025-08-18 12:15:06Z]] 08:28:06.050 [debug] QUERY OK source="sources" db=0.2ms idle=62.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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:28:06.051 [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] 08:28:06.051 [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 [339] 08:28:06.051 [debug] Current batch of media processed. Will check again in 1000ms 08:28:07.052 [debug] Current batch of media processed. Will check again in 1000ms 08:28:07.482 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@Factory_Monster --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/Factory_Monster/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/56/b7/56b7f407e7fde8368b2a4835b263b4df8f9c0d452306f47b6052aceb69dac738.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/ac/bd/acbd20b4f9b6e1f21ffd5b988e75571e8992581b7763bad6643520a2774d5ce3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 101 with: 08:28:07.483 [debug] Gracefully stopping file follower 08:28:07.483 [debug] QUERY OK source="sources" db=0.3ms idle=492.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:28:07.484 [debug] QUERY OK source="sources" db=0.1ms idle=41.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:28:07.484 [debug] QUERY OK source="media_items" db=0.7ms idle=41.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-17 11:30:53Z], 3] 08:28:07.486 [debug] QUERY OK source="media_items" db=0.7ms idle=42.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Handcrafted Sheepskin Jacket by a Master Artisan With 50 Years of Legacy\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://smartstore.naver.com/northbeach1987 (North Beach)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy", "d347589b-e907-4823-96e7-151ce1191ec7", "https://www.youtube.com/watch?v=knlnR0qsLHc", "knlnR0qsLHc", false, 759, false, 1, "/downloads/Factory_Monster/2025-12-17 Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy/Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy [knlnR0qsLHc].mkv", false, false, 3, [], 98, ~U[2025-12-17 11:30:53Z], ~U[2025-12-24 08:28:07Z], ~U[2025-12-24 08:28:07Z], "Handcrafted Sheepskin Jacket by a Master Artisan With 50 Years of Legacy\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://smartstore.naver.com/northbeach1987 (North Beach)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy", "https://www.youtube.com/watch?v=knlnR0qsLHc", "knlnR0qsLHc", 759, false, "/downloads/Factory_Monster/2025-12-17 Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy/Handcrafted Sheepskin Leather Jacket by a Master Artisan With 50 Years of Legacy [knlnR0qsLHc].mkv", false, 3, ~U[2025-12-17 11:30:53Z]] 08:28:07.486 [debug] QUERY OK source="sources" db=0.3ms idle=43.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:28:07.487 [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[2025-12-12 09:45:03Z], 3] 08:28:07.488 [debug] QUERY OK source="media_items" db=0.7ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Incredible Process of Weaving Shading Nets in a Korean Factory\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/4frTRXq (가야테크)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "The Incredible Process of Weaving Shading Nets in a Korean Factory", "cfa0bef4-1bc0-4776-a500-28bae1726ba5", "https://www.youtube.com/watch?v=ObPvvMs2bkI", "ObPvvMs2bkI", false, 651, false, 2, "/downloads/Factory_Monster/2025-12-12 The Incredible Process of Weaving Shading Nets in a Korean Factory/The Incredible Process of Weaving Shading Nets in a Korean Factory [ObPvvMs2bkI].mkv", false, false, 3, [], 98, ~U[2025-12-12 09:45:03Z], ~U[2025-12-24 08:28:07Z], ~U[2025-12-24 08:28:07Z], "The Incredible Process of Weaving Shading Nets in a Korean Factory\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/4frTRXq (가야테크)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "The Incredible Process of Weaving Shading Nets in a Korean Factory", "https://www.youtube.com/watch?v=ObPvvMs2bkI", "ObPvvMs2bkI", 651, false, "/downloads/Factory_Monster/2025-12-12 The Incredible Process of Weaving Shading Nets in a Korean Factory/The Incredible Process of Weaving Shading Nets in a Korean Factory [ObPvvMs2bkI].mkv", false, 3, ~U[2025-12-12 09:45:03Z]] 08:28:07.488 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [3] 08:28:07.489 [debug] QUERY OK source="media_items" db=0.6ms 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[2025-12-06 09:30:12Z], 3] 08:28:07.490 [debug] QUERY OK source="media_items" db=0.7ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Kitchen Faucet Mass Production in Korea\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/4gjiMO3\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Kitchen Faucet Mass Production in Korea", "0b84b288-327f-46c9-9e5e-ff7cd1851267", "https://www.youtube.com/watch?v=KR7UmQUMpyY", "KR7UmQUMpyY", false, 702, false, 3, "/downloads/Factory_Monster/2025-12-06 Kitchen Faucet Mass Production in Korea/Kitchen Faucet Mass Production in Korea [KR7UmQUMpyY].mkv", false, false, 3, [], 98, ~U[2025-12-06 09:30:12Z], ~U[2025-12-24 08:28:07Z], ~U[2025-12-24 08:28:07Z], "Kitchen Faucet Mass Production in Korea\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/4gjiMO3\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Kitchen Faucet Mass Production in Korea", "https://www.youtube.com/watch?v=KR7UmQUMpyY", "KR7UmQUMpyY", 702, false, "/downloads/Factory_Monster/2025-12-06 Kitchen Faucet Mass Production in Korea/Kitchen Faucet Mass Production in Korea [KR7UmQUMpyY].mkv", false, 3, ~U[2025-12-06 09:30:12Z]] 08:28:07.491 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 08:28:07.491 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-12-02 12:00:57Z], 3] 08:28:07.492 [debug] QUERY OK source="media_items" db=0.6ms idle=3.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed\n\n*This video does not contain any paid promotion*\n\n00:00 Motor Production\n08:22 Fastener Production\n18:44 Fence Production\n28:27 Aluminum Profile Production\n\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed", "f0e766c6-3a90-4483-be51-05cc9d5e27f1", "https://www.youtube.com/watch?v=TiuOtBGzrK4", "TiuOtBGzrK4", false, 2263, false, 4, "/downloads/Factory_Monster/2025-12-02 【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed/【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed [TiuOtBGzrK4].mkv", false, false, 3, [], 98, ~U[2025-12-02 12:00:57Z], ~U[2025-12-24 08:28:07Z], ~U[2025-12-24 08:28:07Z], "【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed\n\n*This video does not contain any paid promotion*\n\n00:00 Motor Production\n08:22 Fastener Production\n18:44 Fence Production\n28:27 Aluminum Profile Production\n\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed", "https://www.youtube.com/watch?v=TiuOtBGzrK4", "TiuOtBGzrK4", 2263, false, "/downloads/Factory_Monster/2025-12-02 【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed/【Top 5】Extreme Precision at Massive Scale! Giant Motor & Aluminum Production Revealed [TiuOtBGzrK4].mkv", false, 3, ~U[2025-12-02 12:00:57Z]] 08:28:07.493 [debug] QUERY OK source="sources" db=0.2ms idle=3.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 08:28:07.494 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-11-28 07:45:04Z], 3] 08:28:07.494 [debug] QUERY OK source="media_items" db=0.6ms idle=3.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Turning Giant Tree Root into a Console Table. Wood Working Master in Korea\n\n📌Product in Video: https://naver.me/Gmb20I1P (OLD HAND GALLERY)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Turning Giant Tree Root into a Console Table. Wood Working Master in Korea", "6e5088d4-355b-47d5-8064-b83a7d09585e", "https://www.youtube.com/watch?v=QvPFtNbH9gs", "QvPFtNbH9gs", false, 734, false, 5, "/downloads/Factory_Monster/2025-11-28 Turning Giant Tree Root into a Console Table. Wood Working Master in Korea/Turning Giant Tree Root into a Console Table. Wood Working Master in Korea [QvPFtNbH9gs].mkv", false, false, 3, [], 98, ~U[2025-11-28 07:45:04Z], ~U[2025-12-24 08:28:07Z], ~U[2025-12-24 08:28:07Z], "Turning Giant Tree Root into a Console Table. Wood Working Master in Korea\n\n📌Product in Video: https://naver.me/Gmb20I1P (OLD HAND GALLERY)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Turning Giant Tree Root into a Console Table. Wood Working Master in Korea", "https://www.youtube.com/watch?v=QvPFtNbH9gs", "QvPFtNbH9gs", 734, false, "/downloads/Factory_Monster/2025-11-28 Turning Giant Tree Root into a Console Table. Wood Working Master in Korea/Turning Giant Tree Root into a Console Table. Wood Working Master in Korea [QvPFtNbH9gs].mkv", false, 3, ~U[2025-11-28 07:45:04Z]] 08:28:07.495 [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] 08:28:07.496 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-11-14 09:30:02Z], 3] 08:28:07.497 [debug] QUERY OK source="media_items" db=1.3ms idle=3.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Ecosystem in a House! A Man Makes Vivarium in a Living Room\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/3LvAq3i \n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Ecosystem in a House! A Man Makes Vivarium in a Living Room", "950aa57d-0b2f-4a76-8aaf-b5e880a3630d", "https://www.youtube.com/watch?v=5Rqy6y0kaoA", "5Rqy6y0kaoA", false, 1047, false, 6, "/downloads/Factory_Monster/2025-11-14 Ecosystem in a House! A Man Makes Vivarium in a Living Room/Ecosystem in a House! A Man Makes Vivarium in a Living Room [5Rqy6y0kaoA].mkv", false, false, 3, [], 98, ~U[2025-11-14 09:30:02Z], ~U[2025-12-24 08:28:07Z], ~U[2025-12-24 08:28:07Z], "Ecosystem in a House! A Man Makes Vivarium in a Living Room\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://bit.ly/3LvAq3i \n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Ecosystem in a House! A Man Makes Vivarium in a Living Room", "https://www.youtube.com/watch?v=5Rqy6y0kaoA", "5Rqy6y0kaoA", 1047, false, "/downloads/Factory_Monster/2025-11-14 Ecosystem in a House! A Man Makes Vivarium in a Living Room/Ecosystem in a House! A Man Makes Vivarium in a Living Room [5Rqy6y0kaoA].mkv", false, 3, ~U[2025-11-14 09:30:02Z]] 08:28:07.498 [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] 08:28:07.498 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-11-08 10:00:04Z], 3] 08:28:07.499 [debug] QUERY OK source="media_items" db=0.6ms idle=3.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://jeilbearing.com (JIB)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process", "4e80ea9e-7e1b-4eb4-b0b3-9a588408a89b", "https://www.youtube.com/watch?v=aO6nZa2DTgc", "aO6nZa2DTgc", false, 611, false, 7, "/downloads/Factory_Monster/2025-11-08 10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process/10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process [aO6nZa2DTgc].mkv", false, false, 3, [], 98, ~U[2025-11-08 10:00:04Z], ~U[2025-12-24 08:28:07Z], ~U[2025-12-24 08:28:07Z], "10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://jeilbearing.com (JIB)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process", "https://www.youtube.com/watch?v=aO6nZa2DTgc", "aO6nZa2DTgc", 611, false, "/downloads/Factory_Monster/2025-11-08 10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process/10 Minutes of Amazing Ball Bearing Continuous Production & Satistying Process [aO6nZa2DTgc].mkv", false, 3, ~U[2025-11-08 10:00:04Z]] 08:28:07.500 [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] 08:28:07.500 [debug] QUERY OK source="media_items" db=0.4ms idle=2.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-02 06:30:10Z], 3] 08:28:07.501 [debug] QUERY OK source="media_items" db=0.6ms idle=2.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Huge Creature Grooming Master in Korea\n\n*This video does not contain any paid promotion*\n\n00:00 Big\n09:34 Small\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Huge Creature Grooming Master in Korea", "db6cd4d4-014f-4dd1-9b31-de5b5278041d", "https://www.youtube.com/watch?v=KLHZgtLjIzA", "KLHZgtLjIzA", false, 1221, false, 8, "/downloads/Factory_Monster/2025-11-02 Huge Creature Grooming Master in Korea/Huge Creature Grooming Master in Korea [KLHZgtLjIzA].mkv", false, false, 3, [], 98, ~U[2025-11-02 06:30:10Z], ~U[2025-12-24 08:28:07Z], ~U[2025-12-24 08:28:07Z], "Huge Creature Grooming Master in Korea\n\n*This video does not contain any paid promotion*\n\n00:00 Big\n09:34 Small\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Huge Creature Grooming Master in Korea", "https://www.youtube.com/watch?v=KLHZgtLjIzA", "KLHZgtLjIzA", 1221, false, "/downloads/Factory_Monster/2025-11-02 Huge Creature Grooming Master in Korea/Huge Creature Grooming Master in Korea [KLHZgtLjIzA].mkv", false, 3, ~U[2025-11-02 06:30:10Z]] 08:28:07.502 [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" = ?) [3] 08:28:07.502 [debug] QUERY OK source="media_items" db=0.4ms idle=2.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-29 10:00:29Z], 3] 08:28:07.503 [debug] QUERY OK source="media_items" db=0.6ms idle=2.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory\n\n*This video does not contain any paid promotion*\n\n00:00 Sweaters & Knitwear\n12:52 Towel Production\n20:42 Muffler Production\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#factory", "How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory", "c022fb00-d2a0-4b21-be23-5bdb049b31dd", "https://www.youtube.com/watch?v=BBPI6pIgPkE", "BBPI6pIgPkE", false, 1729, false, 9, "/downloads/Factory_Monster/2025-10-29 How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory/How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory [BBPI6pIgPkE].mkv", false, false, 3, [], 98, ~U[2025-10-29 10:00:29Z], ~U[2025-12-24 08:28:07Z], ~U[2025-12-24 08:28:07Z], "How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory\n\n*This video does not contain any paid promotion*\n\n00:00 Sweaters & Knitwear\n12:52 Towel Production\n20:42 Muffler Production\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#factory", "How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory", "https://www.youtube.com/watch?v=BBPI6pIgPkE", "BBPI6pIgPkE", 1729, false, "/downloads/Factory_Monster/2025-10-29 How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory/How Sweaters and Knitwear Are Made. Inside a Korean Knitting Factory [BBPI6pIgPkE].mkv", false, 3, ~U[2025-10-29 10:00:29Z]] 08:28:07.504 [debug] QUERY OK source="sources" db=0.2ms idle=3.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 08:28:07.504 [debug] QUERY OK source="media_items" db=0.4ms idle=2.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-25 07:00:53Z], 3] 08:28:07.505 [debug] QUERY OK source="media_items" db=0.6ms idle=2.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Incredible Process of Turning Raw Plastic into Colorful Food Containers\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://shop.tupperware.co.kr (TUPPERWARE)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "The Incredible Process of Turning Raw Plastic into Colorful Food Containers", "bca4c9a4-4691-4c35-a4a5-520efc761c2c", "https://www.youtube.com/watch?v=obPa9dTqax0", "obPa9dTqax0", false, 608, false, 10, "/downloads/Factory_Monster/2025-10-25 The Incredible Process of Turning Raw Plastic into Colorful Food Containers/The Incredible Process of Turning Raw Plastic into Colorful Food Containers [obPa9dTqax0].mkv", false, false, 3, [], 98, ~U[2025-10-25 07:00:53Z], ~U[2025-12-24 08:28:07Z], ~U[2025-12-24 08:28:07Z], "The Incredible Process of Turning Raw Plastic into Colorful Food Containers\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://shop.tupperware.co.kr (TUPPERWARE)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "The Incredible Process of Turning Raw Plastic into Colorful Food Containers", "https://www.youtube.com/watch?v=obPa9dTqax0", "obPa9dTqax0", 608, false, "/downloads/Factory_Monster/2025-10-25 The Incredible Process of Turning Raw Plastic into Colorful Food Containers/The Incredible Process of Turning Raw Plastic into Colorful Food Containers [obPa9dTqax0].mkv", false, 3, ~U[2025-10-25 07:00:53Z]] 08:28:07.506 [debug] QUERY OK source="sources" db=0.2ms idle=3.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 08:28:07.506 [debug] QUERY OK source="media_items" db=0.5ms idle=2.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-18 09:00:48Z], 3] 08:28:07.507 [debug] QUERY OK source="media_items" db=0.6ms idle=2.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["How Giant Mining Drills Are Mass Produced with Expert Engineering\n\n*This video does not contain any paid promotion*\n\n00:00 Rock Tools\n10:39 Giant Rock Tool\n20:07 Excavator Grapple\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#factory", "How Giant Mining Drills Are Mass Produced with Expert Engineering", "caa8c998-2104-409b-91d4-c3c2b14888e7", "https://www.youtube.com/watch?v=ZTcL-tL3EG8", "ZTcL-tL3EG8", false, 1829, false, 11, "/downloads/Factory_Monster/2025-10-18 How Giant Mining Drills Are Mass Produced with Expert Engineering/How Giant Mining Drills Are Mass Produced with Expert Engineering [ZTcL-tL3EG8].mkv", false, false, 3, [], 98, ~U[2025-10-18 09:00:48Z], ~U[2025-12-24 08:28:07Z], ~U[2025-12-24 08:28:07Z], "How Giant Mining Drills Are Mass Produced with Expert Engineering\n\n*This video does not contain any paid promotion*\n\n00:00 Rock Tools\n10:39 Giant Rock Tool\n20:07 Excavator Grapple\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#factory", "How Giant Mining Drills Are Mass Produced with Expert Engineering", "https://www.youtube.com/watch?v=ZTcL-tL3EG8", "ZTcL-tL3EG8", 1829, false, "/downloads/Factory_Monster/2025-10-18 How Giant Mining Drills Are Mass Produced with Expert Engineering/How Giant Mining Drills Are Mass Produced with Expert Engineering [ZTcL-tL3EG8].mkv", false, 3, ~U[2025-10-18 09:00:48Z]] 08:28:07.508 [debug] QUERY OK source="sources" db=0.2ms idle=3.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 08:28:07.509 [debug] QUERY OK source="media_items" db=0.4ms idle=2.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-11 11:15:00Z], 3] 08:28:07.510 [debug] QUERY OK source="media_items" db=0.7ms idle=3.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory\n\n00:00 Manhole Covers\n11:00 Valves\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#Metal recycling #Manhole #Factory", "Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory", "bda902bc-3712-4ca7-a4db-7248bf956e70", "https://www.youtube.com/watch?v=6j2F5BdMiQ8", "6j2F5BdMiQ8", false, 1645, false, 12, "/downloads/Factory_Monster/2025-10-11 Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory/Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory [6j2F5BdMiQ8].mkv", false, false, 3, [], 98, ~U[2025-10-11 11:15:00Z], ~U[2025-12-24 08:28:07Z], ~U[2025-12-24 08:28:07Z], "Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory\n\n00:00 Manhole Covers\n11:00 Valves\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#Metal recycling #Manhole #Factory", "Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory", "https://www.youtube.com/watch?v=6j2F5BdMiQ8", "6j2F5BdMiQ8", 1645, false, "/downloads/Factory_Monster/2025-10-11 Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory/Extreme Process of Recycling Metal Scrap Into Manhole Covers and Giant Valve in Factory [6j2F5BdMiQ8].mkv", false, 3, ~U[2025-10-11 11:15:00Z]] 08:28:07.510 [debug] QUERY OK source="sources" db=0.2ms idle=3.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 08:28:07.511 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-10-07 12:57:45Z], 3] 08:28:07.512 [debug] QUERY OK source="media_items" db=0.6ms idle=3.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://volvikmall.com (Volvik)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets", "385a3308-75fc-4993-8173-bba19717caf9", "https://www.youtube.com/watch?v=mOd250yOT2M", "mOd250yOT2M", false, 818, false, 13, "/downloads/Factory_Monster/2025-10-07 How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets/How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets [mOd250yOT2M].mkv", false, false, 3, [], 98, ~U[2025-10-07 12:57:45Z], ~U[2025-12-24 08:28:07Z], ~U[2025-12-24 08:28:07Z], "How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://volvikmall.com (Volvik)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets", "https://www.youtube.com/watch?v=mOd250yOT2M", "mOd250yOT2M", 818, false, "/downloads/Factory_Monster/2025-10-07 How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets/How Does a Golf Ball Fly So Far? Inside the Golf Balls Manufacturing Secrets [mOd250yOT2M].mkv", false, 3, ~U[2025-10-07 12:57:45Z]] 08:28:07.512 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [3] 08:28:07.513 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-10-03 12:01:24Z], 3] 08:28:07.514 [debug] QUERY OK source="media_items" db=0.7ms idle=3.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology\n\n*This video does not contain any paid promotion*\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology", "948aa91e-79d4-4c4b-b2da-bac87831b1e1", "https://www.youtube.com/watch?v=i-m4APD3d44", "i-m4APD3d44", false, 2089, false, 14, "/downloads/Factory_Monster/2025-10-03 How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology/How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology [i-m4APD3d44].mkv", false, false, 3, [], 98, ~U[2025-10-03 12:01:24Z], ~U[2025-12-24 08:28:07Z], ~U[2025-12-24 08:28:07Z], "How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology\n\n*This video does not contain any paid promotion*\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology", "https://www.youtube.com/watch?v=i-m4APD3d44", "i-m4APD3d44", 2089, false, "/downloads/Factory_Monster/2025-10-03 How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology/How Korea Mass Produces High Quality Rebar Using Recycled Scrap Metal with Technology [i-m4APD3d44].mkv", false, 3, ~U[2025-10-03 12:01:24Z]] 08:28:07.515 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [3] 08:28:07.515 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-09-13 08:30:19Z], 3] 08:28:07.516 [debug] QUERY OK source="media_items" db=0.6ms idle=3.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://www.instagram.com/guinongkr (GUINONG)\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags", "1b45cdb9-a7f7-448c-bf36-1f2da332b283", "https://www.youtube.com/watch?v=hI7m7LmEIuE", "hI7m7LmEIuE", false, 606, false, 15, "/downloads/Factory_Monster/2025-09-13 Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags/Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags [hI7m7LmEIuE].mkv", false, false, 3, [], 98, ~U[2025-09-13 08:30:19Z], ~U[2025-12-24 08:28:07Z], ~U[2025-12-24 08:28:07Z], "Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://www.instagram.com/guinongkr (GUINONG)\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags", "https://www.youtube.com/watch?v=hI7m7LmEIuE", "hI7m7LmEIuE", 606, false, "/downloads/Factory_Monster/2025-09-13 Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags/Unique Recycling! Turning Tent Scraps into Durable, Stylish Bags [hI7m7LmEIuE].mkv", false, 3, ~U[2025-09-13 08:30:19Z]] 08:28:07.517 [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" = ?) [3] 08:28:07.518 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-09-10 13:51:07Z], 3] 08:28:07.519 [debug] QUERY OK source="media_items" db=0.7ms idle=3.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftmanship\n\n00:00 Simpsons Rug\n12:27 Kpop Demon Hunters Derpy Rug\n37:06 Squid Game Rug\n\n📌Mook Studio Youtube: https://bit.ly/3VFfQlr\n📌Mook Studio Instagram: https://bit.ly/3VBqidM\n📌Contact: factorymonster2021@gmail.com\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#rug #tufting #character", "The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship", "e3e9cefa-3bc6-4dbd-9a82-06f685ffd9ee", "https://www.youtube.com/watch?v=UikdQfJnfIQ", "UikdQfJnfIQ", false, 3486, false, 16, "/downloads/Factory_Monster/2025-09-10 The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship/The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship [UikdQfJnfIQ].mkv", false, false, 3, [], 98, ~U[2025-09-10 13:51:07Z], ~U[2025-12-24 08:28:07Z], ~U[2025-12-24 08:28:07Z], "The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftmanship\n\n00:00 Simpsons Rug\n12:27 Kpop Demon Hunters Derpy Rug\n37:06 Squid Game Rug\n\n📌Mook Studio Youtube: https://bit.ly/3VFfQlr\n📌Mook Studio Instagram: https://bit.ly/3VBqidM\n📌Contact: factorymonster2021@gmail.com\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#rug #tufting #character", "The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship", "https://www.youtube.com/watch?v=UikdQfJnfIQ", "UikdQfJnfIQ", 3486, false, "/downloads/Factory_Monster/2025-09-10 The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship/The Artist Who Tufts Rugs Worth Thousands?! 100 Hours of Rug Tufting Craftsmanship [UikdQfJnfIQ].mkv", false, 3, ~U[2025-09-10 13:51:07Z]] 08:28:07.519 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 08:28:07.520 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-08-28 11:21:29Z], 3] 08:28:07.521 [debug] QUERY OK source="media_items" db=0.7ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists\n\n📦Product in Video: https://understood.kr (UNDERSTOOD)\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#leather #briefcase #handmade", "Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists", "99f03e3c-4c09-47eb-91b7-563cd8f6c328", "https://www.youtube.com/watch?v=wkV3OUVbwnU", "wkV3OUVbwnU", false, 1144, false, 17, "/downloads/Factory_Monster/2025-08-28 Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists/Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists [wkV3OUVbwnU].mkv", false, false, 3, [], 98, ~U[2025-08-28 11:21:29Z], ~U[2025-12-24 08:28:07Z], ~U[2025-12-24 08:28:07Z], "Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists\n\n📦Product in Video: https://understood.kr (UNDERSTOOD)\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#leather #briefcase #handmade", "Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists", "https://www.youtube.com/watch?v=wkV3OUVbwnU", "wkV3OUVbwnU", 1144, false, "/downloads/Factory_Monster/2025-08-28 Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists/Why Handmade Leather Briefcases Are So Expensive | Crafted by Leather Specialists [wkV3OUVbwnU].mkv", false, 3, ~U[2025-08-28 11:21:29Z]] 08:28:07.522 [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] 08:28:07.522 [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[2025-08-21 09:30:03Z], 3] 08:28:07.523 [debug] QUERY OK source="media_items" db=0.6ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Process of making office furniture. Korean furniture Factory\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://tofas.kr/257 (Tofas)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Process of making office furniture. Korean furniture Factory", "c31069fd-49d1-4e0a-b7d9-0d39822988ed", "https://www.youtube.com/watch?v=7j8rJKOpfLg", "7j8rJKOpfLg", false, 593, false, 18, "/downloads/Factory_Monster/2025-08-21 Process of making office furniture. Korean furniture Factory/Process of making office furniture. Korean furniture Factory [7j8rJKOpfLg].mkv", false, false, 3, [], 98, ~U[2025-08-21 09:30:03Z], ~U[2025-12-24 08:28:07Z], ~U[2025-12-24 08:28:07Z], "Process of making office furniture. Korean furniture Factory\n\n*This video does not contain any paid promotion*\n\n📌Product in Video: https://tofas.kr/257 (Tofas)\n\n📌Contact: factorymonster2021@gmail.com\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved", "Process of making office furniture. Korean furniture Factory", "https://www.youtube.com/watch?v=7j8rJKOpfLg", "7j8rJKOpfLg", 593, false, "/downloads/Factory_Monster/2025-08-21 Process of making office furniture. Korean furniture Factory/Process of making office furniture. Korean furniture Factory [7j8rJKOpfLg].mkv", false, 3, ~U[2025-08-21 09:30:03Z]] 08:28:07.524 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 08:28:07.525 [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[2025-08-18 12:15:06Z], 3] 08:28:07.526 [debug] QUERY OK source="media_items" db=0.6ms idle=2.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["100% Real Stone Pot! Top 4 Craziest Factories in Korea\n\n*This video does not contain any paid promotion\n\n00:00 Real Stone Pot\n13:22 Real Wood Table\n20:59 Traditional Door\n30:26 Steel Gate\n\n📌Contact: factorymonster2021@gmail.com\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#Stone #Wood #Natural", "100% Real Stone Pot! Top 4 Craziest Factories in Korea", "7ecf3d24-751e-4170-b711-9002e3c9083e", "https://www.youtube.com/watch?v=kEuOEVixYLM", "kEuOEVixYLM", false, 2478, false, 19, "/downloads/Factory_Monster/2025-08-18 100% Real Stone Pot! Top 4 Craziest Factories in Korea/100% Real Stone Pot! Top 4 Craziest Factories in Korea [kEuOEVixYLM].mkv", false, false, 3, [], 98, ~U[2025-08-18 12:15:06Z], ~U[2025-12-24 08:28:07Z], ~U[2025-12-24 08:28:07Z], "100% Real Stone Pot! Top 4 Craziest Factories in Korea\n\n*This video does not contain any paid promotion\n\n00:00 Real Stone Pot\n13:22 Real Wood Table\n20:59 Traditional Door\n30:26 Steel Gate\n\n📌Contact: factorymonster2021@gmail.com\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n\n#Stone #Wood #Natural", "100% Real Stone Pot! Top 4 Craziest Factories in Korea", "https://www.youtube.com/watch?v=kEuOEVixYLM", "kEuOEVixYLM", 2478, false, "/downloads/Factory_Monster/2025-08-18 100% Real Stone Pot! Top 4 Craziest Factories in Korea/100% Real Stone Pot! Top 4 Craziest Factories in Korea [kEuOEVixYLM].mkv", false, 3, ~U[2025-08-18 12:15:06Z]] 08:28:07.526 [debug] QUERY OK source="sources" db=0.3ms 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] 08:28:07.527 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-08-09 10:26:00Z], 3] 08:28:07.528 [debug] QUERY OK source="media_items" db=0.7ms idle=3.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["$3000 Handmade Rug! Process of making Korean Traditional Character Rug\n\n*This video does not contain any paid promotion*\n\n📌Mook Studio Youtube: https://bit.ly/3VFfQlr\n📌Mook Studio Instagram: https://bit.ly/3VBqidM\n📌Contact: factorymonster2021@gmail.com\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n#kpopdemonhunters #rug #tufting", "$3000 Handmade Rug! Process of making Korean Traditional Character Rug", "947cbac2-f2e0-4e29-8fc7-630bbbe5afcb", "https://www.youtube.com/watch?v=UdKhZz4D7sE", "UdKhZz4D7sE", false, 1277, false, 20, "/downloads/Factory_Monster/2025-08-09 $3000 Handmade Rug! Process of making Korean Traditional Character Rug/$3000 Handmade Rug! Process of making Korean Traditional Character Rug [UdKhZz4D7sE].mkv", false, false, 3, [], 98, ~U[2025-08-09 10:26:00Z], ~U[2025-12-24 08:28:07Z], ~U[2025-12-24 08:28:07Z], "$3000 Handmade Rug! Process of making Korean Traditional Character Rug\n\n*This video does not contain any paid promotion*\n\n📌Mook Studio Youtube: https://bit.ly/3VFfQlr\n📌Mook Studio Instagram: https://bit.ly/3VBqidM\n📌Contact: factorymonster2021@gmail.com\n\n⭕The Gears FactoryMonster Uses⭕\n📷Camera: https://amzn.to/4lZeopq\n📷Lens: https://amzn.to/45OHAt2\n\n📌Copyrightⓒ 2021. Factory Monster. All Rights Reserved\n#kpopdemonhunters #rug #tufting", "$3000 Handmade Rug! Process of making Korean Traditional Character Rug", "https://www.youtube.com/watch?v=UdKhZz4D7sE", "UdKhZz4D7sE", 1277, false, "/downloads/Factory_Monster/2025-08-09 $3000 Handmade Rug! Process of making Korean Traditional Character Rug/$3000 Handmade Rug! Process of making Korean Traditional Character Rug [UdKhZz4D7sE].mkv", false, 3, ~U[2025-08-09 10:26:00Z]] 08:28:07.528 [debug] QUERY OK source="sources" db=0.2ms idle=3.5ms UPDATE "sources" SET "last_indexed_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2025-12-24 08:28:07Z], ~U[2025-12-24 08:28:07Z], 3] 08:28:07.529 [debug] QUERY OK source="media_items" db=0.5ms 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")))) [3] 08:28:07.530 [debug] QUERY OK source="media_items" db=0.6ms 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] 08:28:07.531 [debug] QUERY OK source="media_items" db=0.2ms idle=3.5ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [3] 08:28:07.532 [debug] QUERY OK source="tasks" db=0.2ms idle=2.5ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [7419, 3, ~U[2025-12-24 08:28:07Z], ~U[2025-12-24 08:28:07Z]] 08:28:07.532 [info] {"args":{"id":3},"id":7403,"meta":{},"state":"success","max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","duration":44629890,"event":"job:stop","queue_time":675284,"attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 08:28:21.745 [info] {"source":"oban","duration":1133,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:28:51.747 [info] {"source":"oban","duration":1595,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:29:00.857 [info] {"source":"oban","duration":356,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:29:21.750 [info] {"source":"oban","duration":1662,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:29:51.751 [info] {"source":"oban","duration":1328,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:30:00.859 [info] {"source":"oban","duration":1245,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:30:21.753 [info] {"source":"oban","duration":1542,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:30:51.756 [info] {"source":"oban","duration":1902,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":1} 08:31:00.861 [info] {"source":"oban","duration":825,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:31:21.758 [info] {"source":"oban","duration":1150,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:31:51.760 [info] {"source":"oban","duration":1646,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:32:00.862 [info] {"source":"oban","duration":318,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:32:21.763 [info] {"source":"oban","duration":1276,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:32:51.765 [info] {"source":"oban","duration":1213,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:33:00.864 [info] {"source":"oban","duration":589,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:33:21.767 [info] {"source":"oban","duration":1005,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:33:51.769 [info] {"source":"oban","duration":1313,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:34:00.866 [info] {"source":"oban","duration":590,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:34:21.771 [info] {"source":"oban","duration":1025,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:34:35.779 [info] {"args":{"id":2},"id":7404,"meta":{},"system_time":1766565275779063906,"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"]} 08:34:35.779 [debug] QUERY OK source="sources" db=0.2ms idle=335.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:35.779 [debug] QUERY OK source="settings" db=0.1ms idle=336.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:34:35.781 [debug] QUERY OK source="media_items" db=1.0ms idle=336.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")))) [2] 08:34:35.781 [debug] QUERY OK source="media_items" db=0.3ms idle=8.6ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [2] 08:34:35.782 [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] 08:34:35.783 [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 [] 08:34:35.783 [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 [] 08:34:35.785 [debug] QUERY OK source="media_items" db=1.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 WHERE (m0."source_id" = ?) ORDER BY m0."uploaded_at" DESC LIMIT 50 OFFSET 20 [2] 08:34:35.786 [debug] Running yt-dlp command for action: get_media_attributes_for_collection 08:34:35.786 [debug] Current batch of media processed. Will check again in 1000ms 08:34:35.786 [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 [] 08:34:35.786 [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 [] 08:34:35.787 [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 [] 08:34:35.787 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@FactoryTrip2022 --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/FactoryTrip2022/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/60/00/6000d19d6c6e8984727959ca9759e7aec231946ed95fcc2fe94051f0577d8c41.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/0f/11/0f11b029743cd0c7d30f79b629faa5669c2b662d454c4c44b7610a317c31226e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 08:34:36.787 [debug] Current batch of media processed. Will check again in 1000ms 08:34:37.788 [debug] Current batch of media processed. Will check again in 1000ms 08:34:38.789 [debug] Current batch of media processed. Will check again in 1000ms 08:34:39.790 [debug] Current batch of media processed. Will check again in 1000ms 08:34:40.792 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 / Top 10 Most-Watched Manufacturing Processes of 2025! Inside Korea’s Incredible Factories\n\n00:00 한국의 캠핑카 만드는 과정\n23:25 한국의 맷돌 만드는 과정\n39:36 한국의 낚시바늘 만드는 과정\n50:39 한국의 낚시대 만드는 과정\n1:06:53 한국의 목탁 만드는 과정\n1:22:06 한국의 레진 테이블 만드는 과정\n1:48:22 한국의 육포 만드는 과정\n1:59:34 한국의 멀티탭 만드는 과정\n2:10:38 한국의 비누 만드는 과정\n2:19:03 한국의 범종 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#캠핑카 #캠퍼 #맷돌 #낚시 #낚시용품 #낚시바늘 #낚시대 #목탁 #레진 #레진테이블 #테이블 #육포 #멀티탭 #비누 #범종 #식품공장 #목공 #우드워커 #공장 #공방 #기계 #전문가 #기술자 #장인 #메이킹 #제조 #생산 #제작 #camper #campervan #campingcar #milestone #milestones #stoneware #fishing #fishingequipment #fishinghook #fishingrod #fishingrods #moktak #woodenclapper #woodenfish #woodworking #woodwork #woodscraft #woodart #woodworkingart #woodcraft #resintable #woodtable #resinart #beefjerky #jerky #powerstrips #powerbar #extensioncord #soap #soaps #soapmaking #bell #bronzebell #templebells #templebell #casting #foodfactory #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "duration" => 9470, "filename" => "/downloads/FactoryTrip2022/2025-12-19 2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 ⧸ Inside Korea’s Incredible Factories/2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 ⧸ Inside Korea’s Incredible Factories [JndvLYRWlvY].mkv", "id" => "JndvLYRWlvY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=JndvLYRWlvY", "playlist_index" => 1, "timestamp" => 1766130600, "title" => "2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 / Inside Korea’s Incredible Factories", "upload_date" => "20251219"} 08:34:40.792 [debug] QUERY OK source="sources" db=0.2ms idle=1349.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [2] 08:34:40.793 [debug] QUERY OK source="sources" db=0.2ms idle=1349.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:40.794 [debug] QUERY OK source="media_items" db=0.6ms idle=1350.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-19 07:50:00Z], 2] 08:34:40.796 [debug] QUERY OK source="media_items" db=1.1ms idle=1014.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 / Top 10 Most-Watched Manufacturing Processes of 2025! Inside Korea’s Incredible Factories\n\n00:00 한국의 캠핑카 만드는 과정\n23:25 한국의 맷돌 만드는 과정\n39:36 한국의 낚시바늘 만드는 과정\n50:39 한국의 낚시대 만드는 과정\n1:06:53 한국의 목탁 만드는 과정\n1:22:06 한국의 레진 테이블 만드는 과정\n1:48:22 한국의 육포 만드는 과정\n1:59:34 한국의 멀티탭 만드는 과정\n2:10:38 한국의 비누 만드는 과정\n2:19:03 한국의 범종 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#캠핑카 #캠퍼 #맷돌 #낚시 #낚시용품 #낚시바늘 #낚시대 #목탁 #레진 #레진테이블 #테이블 #육포 #멀티탭 #비누 #범종 #식품공장 #목공 #우드워커 #공장 #공방 #기계 #전문가 #기술자 #장인 #메이킹 #제조 #생산 #제작 #camper #campervan #campingcar #milestone #milestones #stoneware #fishing #fishingequipment #fishinghook #fishingrod #fishingrods #moktak #woodenclapper #woodenfish #woodworking #woodwork #woodscraft #woodart #woodworkingart #woodcraft #resintable #woodtable #resinart #beefjerky #jerky #powerstrips #powerbar #extensioncord #soap #soaps #soapmaking #bell #bronzebell #templebells #templebell #casting #foodfactory #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 / Inside Korea’s Incredible Factories", "af42fd7b-2037-4422-abc3-b7cdeacbe8f1", "https://www.youtube.com/watch?v=JndvLYRWlvY", "JndvLYRWlvY", false, 9470, false, 1, "/downloads/FactoryTrip2022/2025-12-19 2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 ⧸ Inside Korea’s Incredible Factories/2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 ⧸ Inside Korea’s Incredible Factories [JndvLYRWlvY].mkv", false, false, 2, [], 98, ~U[2025-12-19 07:50:00Z], ~U[2025-12-24 08:34:40Z], ~U[2025-12-24 08:34:40Z], "2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 / Top 10 Most-Watched Manufacturing Processes of 2025! Inside Korea’s Incredible Factories\n\n00:00 한국의 캠핑카 만드는 과정\n23:25 한국의 맷돌 만드는 과정\n39:36 한국의 낚시바늘 만드는 과정\n50:39 한국의 낚시대 만드는 과정\n1:06:53 한국의 목탁 만드는 과정\n1:22:06 한국의 레진 테이블 만드는 과정\n1:48:22 한국의 육포 만드는 과정\n1:59:34 한국의 멀티탭 만드는 과정\n2:10:38 한국의 비누 만드는 과정\n2:19:03 한국의 범종 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#캠핑카 #캠퍼 #맷돌 #낚시 #낚시용품 #낚시바늘 #낚시대 #목탁 #레진 #레진테이블 #테이블 #육포 #멀티탭 #비누 #범종 #식품공장 #목공 #우드워커 #공장 #공방 #기계 #전문가 #기술자 #장인 #메이킹 #제조 #생산 #제작 #camper #campervan #campingcar #milestone #milestones #stoneware #fishing #fishingequipment #fishinghook #fishingrod #fishingrods #moktak #woodenclapper #woodenfish #woodworking #woodwork #woodscraft #woodart #woodworkingart #woodcraft #resintable #woodtable #resinart #beefjerky #jerky #powerstrips #powerbar #extensioncord #soap #soaps #soapmaking #bell #bronzebell #templebells #templebell #casting #foodfactory #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 / Inside Korea’s Incredible Factories", "https://www.youtube.com/watch?v=JndvLYRWlvY", "JndvLYRWlvY", 9470, false, "/downloads/FactoryTrip2022/2025-12-19 2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 ⧸ Inside Korea’s Incredible Factories/2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 ⧸ Inside Korea’s Incredible Factories [JndvLYRWlvY].mkv", false, 2, ~U[2025-12-19 07:50:00Z]] 08:34:40.796 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=13.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" = ?) [2] 08:34:40.797 [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] 08:34:40.797 [debug] QUERY OK source="media_items" db=0.2ms idle=4.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 [27892] 08:34:40.798 [debug] Current batch of media processed. Will check again in 1000ms 08:34:41.799 [debug] Current batch of media processed. Will check again in 1000ms 08:34:42.800 [debug] Current batch of media processed. Will check again in 1000ms 08:34:43.801 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#프라이팬 #주방용품 #공장 #냄비 #후라이팬 #팬 #웍팬 #주방도구 #키친 #델라고 #러브쿡 #오일마스터 #기술자 #제조 #과정 #생산 #제작 #메이킹 #pan #frypan #fryingpan #cookingpan #cookware #kitchenware #pot #frypanmaking #cookwaremaking #skillet #dellago #oilmaster #lovecook #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 741, "filename" => "/downloads/FactoryTrip2022/2025-12-12 10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 ⧸ Korean cookware factory/10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 ⧸ Korean cookware factory [Qa2-1g1GPN4].mkv", "id" => "Qa2-1g1GPN4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Qa2-1g1GPN4", "playlist_index" => 2, "timestamp" => 1765525801, "title" => "10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 / Korean cookware factory", "upload_date" => "20251212"} 08:34:43.802 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=1358.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 (?)) [2] 08:34:43.802 [debug] QUERY OK source="sources" db=0.1ms idle=1359.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:43.803 [debug] QUERY OK source="media_items" db=0.6ms idle=1359.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-12 07:50:01Z], 2] 08:34:43.806 [debug] QUERY OK source="media_items" db=1.9ms idle=1016.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#프라이팬 #주방용품 #공장 #냄비 #후라이팬 #팬 #웍팬 #주방도구 #키친 #델라고 #러브쿡 #오일마스터 #기술자 #제조 #과정 #생산 #제작 #메이킹 #pan #frypan #fryingpan #cookingpan #cookware #kitchenware #pot #frypanmaking #cookwaremaking #skillet #dellago #oilmaster #lovecook #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 / Korean cookware factory", "626c9b3a-5823-455d-99e7-1f293dc702f1", "https://www.youtube.com/watch?v=Qa2-1g1GPN4", "Qa2-1g1GPN4", false, 741, false, 2, "/downloads/FactoryTrip2022/2025-12-12 10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 ⧸ Korean cookware factory/10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 ⧸ Korean cookware factory [Qa2-1g1GPN4].mkv", false, false, 2, [], 98, ~U[2025-12-12 07:50:01Z], ~U[2025-12-24 08:34:43Z], ~U[2025-12-24 08:34:43Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#프라이팬 #주방용품 #공장 #냄비 #후라이팬 #팬 #웍팬 #주방도구 #키친 #델라고 #러브쿡 #오일마스터 #기술자 #제조 #과정 #생산 #제작 #메이킹 #pan #frypan #fryingpan #cookingpan #cookware #kitchenware #pot #frypanmaking #cookwaremaking #skillet #dellago #oilmaster #lovecook #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 / Korean cookware factory", "https://www.youtube.com/watch?v=Qa2-1g1GPN4", "Qa2-1g1GPN4", 741, false, "/downloads/FactoryTrip2022/2025-12-12 10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 ⧸ Korean cookware factory/10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 ⧸ Korean cookware factory [Qa2-1g1GPN4].mkv", false, 2, ~U[2025-12-12 07:50:01Z]] 08:34:43.806 [debug] QUERY OK source="sources" db=0.2ms idle=17.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:43.807 [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] 08:34:43.807 [debug] QUERY OK source="media_items" db=0.2ms idle=4.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 [25948] 08:34:43.807 [debug] Current batch of media processed. Will check again in 1000ms 08:34:44.808 [debug] Current batch of media processed. Will check again in 1000ms 08:34:45.809 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#의자 #사무용의자 #공장 #사무용가구 #컴퓨터의자 #인테리어의자 #카페의자 #책상의자 #메쉬의자 #학생의자 #스툴 #의자추천 #사출 #DSP #ERMON #기술자 #제조 #과정 #생산 #제작 #메이킹 #chair #chairs #officechair #officechairs #computerchair #chairmaking #injection #gamingchair #executivechair #stool #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 696, "filename" => "/downloads/FactoryTrip2022/2025-12-05 30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 ⧸ Korean Chair Factory/30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 ⧸ Korean Chair Factory [jF72xiNqq6Q].mkv", "id" => "jF72xiNqq6Q", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=jF72xiNqq6Q", "playlist_index" => 3, "timestamp" => 1764921000, "title" => "30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 / Korean Chair Factory", "upload_date" => "20251205"} 08:34:45.810 [debug] QUERY OK source="sources" db=0.2ms idle=366.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [2] 08:34:45.810 [debug] QUERY OK source="sources" db=0.1ms idle=367.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:45.811 [debug] QUERY OK source="media_items" db=0.8ms idle=367.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-05 07:50:00Z], 2] 08:34:45.813 [debug] QUERY OK source="media_items" db=1.1ms idle=368.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#의자 #사무용의자 #공장 #사무용가구 #컴퓨터의자 #인테리어의자 #카페의자 #책상의자 #메쉬의자 #학생의자 #스툴 #의자추천 #사출 #DSP #ERMON #기술자 #제조 #과정 #생산 #제작 #메이킹 #chair #chairs #officechair #officechairs #computerchair #chairmaking #injection #gamingchair #executivechair #stool #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 / Korean Chair Factory", "df307a45-9e7d-4e41-9700-9f5775038fe1", "https://www.youtube.com/watch?v=jF72xiNqq6Q", "jF72xiNqq6Q", false, 696, false, 3, "/downloads/FactoryTrip2022/2025-12-05 30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 ⧸ Korean Chair Factory/30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 ⧸ Korean Chair Factory [jF72xiNqq6Q].mkv", false, false, 2, [], 98, ~U[2025-12-05 07:50:00Z], ~U[2025-12-24 08:34:45Z], ~U[2025-12-24 08:34:45Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#의자 #사무용의자 #공장 #사무용가구 #컴퓨터의자 #인테리어의자 #카페의자 #책상의자 #메쉬의자 #학생의자 #스툴 #의자추천 #사출 #DSP #ERMON #기술자 #제조 #과정 #생산 #제작 #메이킹 #chair #chairs #officechair #officechairs #computerchair #chairmaking #injection #gamingchair #executivechair #stool #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 / Korean Chair Factory", "https://www.youtube.com/watch?v=jF72xiNqq6Q", "jF72xiNqq6Q", 696, false, "/downloads/FactoryTrip2022/2025-12-05 30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 ⧸ Korean Chair Factory/30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 ⧸ Korean Chair Factory [jF72xiNqq6Q].mkv", false, 2, ~U[2025-12-05 07:50:00Z]] 08:34:45.813 [debug] QUERY OK source="sources" db=0.2ms idle=20.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:45.814 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:34:45.814 [debug] QUERY OK source="media_items" db=0.2ms 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 [23252] 08:34:45.815 [debug] Current batch of media processed. Will check again in 1000ms 08:34:46.816 [debug] Current batch of media processed. Will check again in 1000ms 08:34:47.818 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n\n#가죽 #가죽가방 #공방 #가죽공방 #남자가방 #서류가방 #가죽제품 #가죽소품 #가죽지갑 #카드지갑 #아스툴라 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #leather #leathercraft #leatherbag #leatherbags #leatherworking #leatherfashion #leatherwork #leatherworker #bagmaking #briefcase #briefbag #businesscase #korean #handmade #handmadecraft #handmadebag #machine #making #makingvideos #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 1105, "filename" => "/downloads/FactoryTrip2022/2025-11-28 한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 ⧸ Korean Leather Workshop/한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 ⧸ Korean Leather Workshop [sslv-jLNb0Y].mkv", "id" => "sslv-jLNb0Y", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=sslv-jLNb0Y", "playlist_index" => 4, "timestamp" => 1764316201, "title" => "한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 / Korean Leather Workshop", "upload_date" => "20251128"} 08:34:47.819 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=375.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 (?)) [2] 08:34:47.819 [debug] QUERY OK source="sources" db=0.2ms idle=375.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:47.820 [debug] QUERY OK source="media_items" db=0.7ms idle=376.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-28 07:50:01Z], 2] 08:34:47.822 [debug] QUERY OK source="media_items" db=0.9ms idle=377.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n\n#가죽 #가죽가방 #공방 #가죽공방 #남자가방 #서류가방 #가죽제품 #가죽소품 #가죽지갑 #카드지갑 #아스툴라 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #leather #leathercraft #leatherbag #leatherbags #leatherworking #leatherfashion #leatherwork #leatherworker #bagmaking #briefcase #briefbag #businesscase #korean #handmade #handmadecraft #handmadebag #machine #making #makingvideos #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 / Korean Leather Workshop", "dbdd0d04-871e-44f9-b7c3-b8e362eb7870", "https://www.youtube.com/watch?v=sslv-jLNb0Y", "sslv-jLNb0Y", false, 1105, false, 4, "/downloads/FactoryTrip2022/2025-11-28 한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 ⧸ Korean Leather Workshop/한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 ⧸ Korean Leather Workshop [sslv-jLNb0Y].mkv", false, false, 2, [], 98, ~U[2025-11-28 07:50:01Z], ~U[2025-12-24 08:34:47Z], ~U[2025-12-24 08:34:47Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n\n#가죽 #가죽가방 #공방 #가죽공방 #남자가방 #서류가방 #가죽제품 #가죽소품 #가죽지갑 #카드지갑 #아스툴라 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #leather #leathercraft #leatherbag #leatherbags #leatherworking #leatherfashion #leatherwork #leatherworker #bagmaking #briefcase #briefbag #businesscase #korean #handmade #handmadecraft #handmadebag #machine #making #makingvideos #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 / Korean Leather Workshop", "https://www.youtube.com/watch?v=sslv-jLNb0Y", "sslv-jLNb0Y", 1105, false, "/downloads/FactoryTrip2022/2025-11-28 한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 ⧸ Korean Leather Workshop/한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 ⧸ Korean Leather Workshop [sslv-jLNb0Y].mkv", false, 2, ~U[2025-11-28 07:50:01Z]] 08:34:47.822 [debug] QUERY OK source="sources" db=0.1ms idle=24.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" = ?) [2] 08:34:47.822 [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] 08:34:47.823 [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 [21936] 08:34:47.823 [debug] Current batch of media processed. Will check again in 1000ms 08:34:48.824 [debug] Current batch of media processed. Will check again in 1000ms 08:34:49.825 [debug] Current batch of media processed. Will check again in 1000ms 08:34:50.826 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 / A Full Look Inside Korea’s Packaging Manufacturing\n\n00:00 한국의 테이프 만드는 과정\n10:26 한국의 종이용기 만드는 과정\n23:35 한국의 비닐봉지 만드는 과정\n31:14 한국의 골판지 박스 자동으로 만드는 과정\n38:14 한국의 유리병 만드는 과정\n44:58 한국의 종이가방 만드는 과정\n55:27 한국의 금속 캔 만드는 과정\n1:04:16 한국의 라벨 만드는 과정\n1:18:32 한국의 로프 만드는 과정\n1:27:22 한국의 포장박스 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#포장 #패키지 #공장 #테이프 #종이컵 #종이용기 #비닐 #비닐봉지 #박스 #골판지박스 #종이박스 #포장박스 #유리용기 #유리병 #종이가방 #쇼핑백 #금속용기 #금속캔 #제관 #라벨 #스티커 #로프 #박스제작 #포장재 #기계 #전문가 #기술자 #장인 #제작 #packing #packaging #package #pack #packagingmachine #papercup #papercupmachine #paperpackaging #papercontainer #paperbag #paperbagmachine #paperbags #paperbagmakingmachine #paperbagmaking #plasticbag #plasticbagmakingmachine #plasticbags #rope #glassbottles #paperbox #cardboardpackaging #cardboardbox #label #labelmachine #labelmaking #metalpackaging #can #metalcan #steelcan #tincan #tincans #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "duration" => 5794, "filename" => "/downloads/FactoryTrip2022/2025-11-21 포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 ⧸ Inside Korea’s Packaging Factories/포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 ⧸ Inside Korea’s Packaging Factories [6heSlmklMxM].mkv", "id" => "6heSlmklMxM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=6heSlmklMxM", "playlist_index" => 5, "timestamp" => 1763711401, "title" => "포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 / Inside Korea’s Packaging Factories", "upload_date" => "20251121"} 08:34:50.827 [debug] QUERY OK source="sources" db=0.1ms idle=1383.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [2] 08:34:50.827 [debug] QUERY OK source="sources" db=0.2ms idle=1383.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:50.828 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=1384.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-21 07:50:01Z], 2] 08:34:50.841 [debug] QUERY OK source="media_items" db=12.4ms idle=1027.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 / A Full Look Inside Korea’s Packaging Manufacturing\n\n00:00 한국의 테이프 만드는 과정\n10:26 한국의 종이용기 만드는 과정\n23:35 한국의 비닐봉지 만드는 과정\n31:14 한국의 골판지 박스 자동으로 만드는 과정\n38:14 한국의 유리병 만드는 과정\n44:58 한국의 종이가방 만드는 과정\n55:27 한국의 금속 캔 만드는 과정\n1:04:16 한국의 라벨 만드는 과정\n1:18:32 한국의 로프 만드는 과정\n1:27:22 한국의 포장박스 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#포장 #패키지 #공장 #테이프 #종이컵 #종이용기 #비닐 #비닐봉지 #박스 #골판지박스 #종이박스 #포장박스 #유리용기 #유리병 #종이가방 #쇼핑백 #금속용기 #금속캔 #제관 #라벨 #스티커 #로프 #박스제작 #포장재 #기계 #전문가 #기술자 #장인 #제작 #packing #packaging #package #pack #packagingmachine #papercup #papercupmachine #paperpackaging #papercontainer #paperbag #paperbagmachine #paperbags #paperbagmakingmachine #paperbagmaking #plasticbag #plasticbagmakingmachine #plasticbags #rope #glassbottles #paperbox #cardboardpackaging #cardboardbox #label #labelmachine #labelmaking #metalpackaging #can #metalcan #steelcan #tincan #tincans #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 / Inside Korea’s Packaging Factories", "b984fc45-bc9e-4e7e-87a9-c3379d05d4ce", "https://www.youtube.com/watch?v=6heSlmklMxM", "6heSlmklMxM", false, 5794, false, 5, "/downloads/FactoryTrip2022/2025-11-21 포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 ⧸ Inside Korea’s Packaging Factories/포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 ⧸ Inside Korea’s Packaging Factories [6heSlmklMxM].mkv", false, false, 2, [], 98, ~U[2025-11-21 07:50:01Z], ~U[2025-12-24 08:34:50Z], ~U[2025-12-24 08:34:50Z], "포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 / A Full Look Inside Korea’s Packaging Manufacturing\n\n00:00 한국의 테이프 만드는 과정\n10:26 한국의 종이용기 만드는 과정\n23:35 한국의 비닐봉지 만드는 과정\n31:14 한국의 골판지 박스 자동으로 만드는 과정\n38:14 한국의 유리병 만드는 과정\n44:58 한국의 종이가방 만드는 과정\n55:27 한국의 금속 캔 만드는 과정\n1:04:16 한국의 라벨 만드는 과정\n1:18:32 한국의 로프 만드는 과정\n1:27:22 한국의 포장박스 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#포장 #패키지 #공장 #테이프 #종이컵 #종이용기 #비닐 #비닐봉지 #박스 #골판지박스 #종이박스 #포장박스 #유리용기 #유리병 #종이가방 #쇼핑백 #금속용기 #금속캔 #제관 #라벨 #스티커 #로프 #박스제작 #포장재 #기계 #전문가 #기술자 #장인 #제작 #packing #packaging #package #pack #packagingmachine #papercup #papercupmachine #paperpackaging #papercontainer #paperbag #paperbagmachine #paperbags #paperbagmakingmachine #paperbagmaking #plasticbag #plasticbagmakingmachine #plasticbags #rope #glassbottles #paperbox #cardboardpackaging #cardboardbox #label #labelmachine #labelmaking #metalpackaging #can #metalcan #steelcan #tincan #tincans #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 / Inside Korea’s Packaging Factories", "https://www.youtube.com/watch?v=6heSlmklMxM", "6heSlmklMxM", 5794, false, "/downloads/FactoryTrip2022/2025-11-21 포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 ⧸ Inside Korea’s Packaging Factories/포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 ⧸ Inside Korea’s Packaging Factories [6heSlmklMxM].mkv", false, 2, ~U[2025-11-21 07:50:01Z]] 08:34:50.842 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=38.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:50.842 [debug] QUERY OK source="media_profiles" db=0.2ms 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] 08:34:50.843 [debug] QUERY OK source="media_items" db=0.1ms idle=15.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 [20614] 08:34:50.843 [debug] Current batch of media processed. Will check again in 1000ms 08:34:51.773 [info] {"source":"oban","duration":1102,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:34:51.844 [debug] Current batch of media processed. Will check again in 1000ms 08:34:52.845 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#낚시 #낚시바늘 #공장 #낚시용품 #피싱 #코리아후크 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #fishing #fishingequipment #hook #fishinghooks #fishinghook #hookfishing #hook_fishing #hooker #heattreatment #hookmaking #koreahook #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 686, "filename" => "/downloads/FactoryTrip2022/2025-11-14 작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 ⧸ Korean Fishing Hook Factory/작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 ⧸ Korean Fishing Hook Factory [69UGVR66ngs].mkv", "id" => "69UGVR66ngs", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=69UGVR66ngs", "playlist_index" => 6, "timestamp" => 1763106600, "title" => "작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 / Korean Fishing Hook Factory", "upload_date" => "20251114"} 08:34:52.846 [debug] QUERY OK source="sources" db=0.2ms idle=1040.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [2] 08:34:52.846 [debug] QUERY OK source="sources" db=0.2ms idle=402.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:52.847 [debug] QUERY OK source="media_items" db=0.6ms idle=403.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-14 07:50:00Z], 2] 08:34:52.848 [debug] QUERY OK source="media_items" db=0.9ms idle=404.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#낚시 #낚시바늘 #공장 #낚시용품 #피싱 #코리아후크 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #fishing #fishingequipment #hook #fishinghooks #fishinghook #hookfishing #hook_fishing #hooker #heattreatment #hookmaking #koreahook #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 / Korean Fishing Hook Factory", "2445cbcb-f201-4654-8abb-ab3ae16c084f", "https://www.youtube.com/watch?v=69UGVR66ngs", "69UGVR66ngs", false, 686, false, 6, "/downloads/FactoryTrip2022/2025-11-14 작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 ⧸ Korean Fishing Hook Factory/작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 ⧸ Korean Fishing Hook Factory [69UGVR66ngs].mkv", false, false, 2, [], 98, ~U[2025-11-14 07:50:00Z], ~U[2025-12-24 08:34:52Z], ~U[2025-12-24 08:34:52Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#낚시 #낚시바늘 #공장 #낚시용품 #피싱 #코리아후크 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #fishing #fishingequipment #hook #fishinghooks #fishinghook #hookfishing #hook_fishing #hooker #heattreatment #hookmaking #koreahook #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 / Korean Fishing Hook Factory", "https://www.youtube.com/watch?v=69UGVR66ngs", "69UGVR66ngs", 686, false, "/downloads/FactoryTrip2022/2025-11-14 작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 ⧸ Korean Fishing Hook Factory/작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 ⧸ Korean Fishing Hook Factory [69UGVR66ngs].mkv", false, 2, ~U[2025-11-14 07:50:00Z]] 08:34:52.849 [debug] QUERY OK source="sources" db=0.2ms idle=41.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" = ?) [2] 08:34:52.849 [debug] QUERY OK source="media_profiles" db=0.3ms idle=3.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:34:52.850 [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 [19298] 08:34:52.850 [debug] Current batch of media processed. Will check again in 1000ms 08:34:53.851 [debug] Current batch of media processed. Will check again in 1000ms 08:34:54.852 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#밸브 #주물 #공장 #이형관 #맨홀뚜껑 #상하수도 #주철 #주조 #수도용 #산업용 #세계주철 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #valve #valvefactory #watervalve #gatevalve #gatevalves #casting #cast #iron #castiron #valvemanufacturer #valvemaking #fitting #segye #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 691, "filename" => "/downloads/FactoryTrip2022/2025-11-07 누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 ⧸ Korean Valve Factory/누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 ⧸ Korean Valve Factory [YM3ToKKMIZs].mkv", "id" => "YM3ToKKMIZs", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=YM3ToKKMIZs", "playlist_index" => 7, "timestamp" => 1762502449, "title" => "누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 / Korean Valve Factory", "upload_date" => "20251107"} 08:34:54.853 [debug] QUERY OK source="sources" db=0.2ms idle=409.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 (?)) [2] 08:34:54.853 [debug] QUERY OK source="sources" db=0.1ms idle=410.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:54.854 [debug] QUERY OK source="media_items" db=0.6ms idle=410.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-07 08:00:49Z], 2] 08:34:54.856 [debug] QUERY OK source="media_items" db=0.9ms idle=411.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#밸브 #주물 #공장 #이형관 #맨홀뚜껑 #상하수도 #주철 #주조 #수도용 #산업용 #세계주철 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #valve #valvefactory #watervalve #gatevalve #gatevalves #casting #cast #iron #castiron #valvemanufacturer #valvemaking #fitting #segye #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 / Korean Valve Factory", "e9f67ca1-15b1-4bcf-8d9b-b2c1a21076e8", "https://www.youtube.com/watch?v=YM3ToKKMIZs", "YM3ToKKMIZs", false, 691, false, 7, "/downloads/FactoryTrip2022/2025-11-07 누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 ⧸ Korean Valve Factory/누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 ⧸ Korean Valve Factory [YM3ToKKMIZs].mkv", false, false, 2, [], 98, ~U[2025-11-07 08:00:49Z], ~U[2025-12-24 08:34:54Z], ~U[2025-12-24 08:34:54Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#밸브 #주물 #공장 #이형관 #맨홀뚜껑 #상하수도 #주철 #주조 #수도용 #산업용 #세계주철 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #valve #valvefactory #watervalve #gatevalve #gatevalves #casting #cast #iron #castiron #valvemanufacturer #valvemaking #fitting #segye #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 / Korean Valve Factory", "https://www.youtube.com/watch?v=YM3ToKKMIZs", "YM3ToKKMIZs", 691, false, "/downloads/FactoryTrip2022/2025-11-07 누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 ⧸ Korean Valve Factory/누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 ⧸ Korean Valve Factory [YM3ToKKMIZs].mkv", false, 2, ~U[2025-11-07 08:00:49Z]] 08:34:54.856 [debug] QUERY OK source="sources" db=0.2ms idle=44.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:54.856 [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] 08:34:54.857 [debug] QUERY OK source="media_items" db=0.2ms 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 [18161] 08:34:54.857 [debug] Current batch of media processed. Will check again in 1000ms 08:34:55.858 [debug] Current batch of media processed. Will check again in 1000ms 08:34:56.859 [debug] Current batch of media processed. Will check again in 1000ms 08:34:57.860 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#뚝배기 #주방용품 #공장 #업소용 #내열도자기 #도기 #세라믹 #솥 #냄비 #경산세라믹 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #ttukbaegi #cookware #cookwares #kitchenware #kitchenwares #ceramicware #pot #claypot #claypotmaking #potmaking #ceramicpots #ceramicpot #ceramicfactory #earthenware #dishware #porcelain #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 660, "filename" => "/downloads/FactoryTrip2022/2025-10-31 한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 ⧸ Korean Clay Pot Factory/한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 ⧸ Korean Clay Pot Factory [DMIGlU5DaZI].mkv", "id" => "DMIGlU5DaZI", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=DMIGlU5DaZI", "playlist_index" => 8, "timestamp" => 1761897001, "title" => "한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 / Korean Clay Pot Factory", "upload_date" => "20251031"} 08:34:57.861 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=1417.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 (?)) [2] 08:34:57.861 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1418.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:57.862 [debug] QUERY OK source="media_items" db=0.6ms idle=1418.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-31 07:50:01Z], 2] 08:34:57.990 [debug] QUERY OK source="media_items" db=126.6ms idle=1047.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#뚝배기 #주방용품 #공장 #업소용 #내열도자기 #도기 #세라믹 #솥 #냄비 #경산세라믹 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #ttukbaegi #cookware #cookwares #kitchenware #kitchenwares #ceramicware #pot #claypot #claypotmaking #potmaking #ceramicpots #ceramicpot #ceramicfactory #earthenware #dishware #porcelain #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 / Korean Clay Pot Factory", "da04bc9a-f00b-427a-b7d8-cb23f62684f6", "https://www.youtube.com/watch?v=DMIGlU5DaZI", "DMIGlU5DaZI", false, 660, false, 8, "/downloads/FactoryTrip2022/2025-10-31 한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 ⧸ Korean Clay Pot Factory/한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 ⧸ Korean Clay Pot Factory [DMIGlU5DaZI].mkv", false, false, 2, [], 98, ~U[2025-10-31 07:50:01Z], ~U[2025-12-24 08:34:57Z], ~U[2025-12-24 08:34:57Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#뚝배기 #주방용품 #공장 #업소용 #내열도자기 #도기 #세라믹 #솥 #냄비 #경산세라믹 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #ttukbaegi #cookware #cookwares #kitchenware #kitchenwares #ceramicware #pot #claypot #claypotmaking #potmaking #ceramicpots #ceramicpot #ceramicfactory #earthenware #dishware #porcelain #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 / Korean Clay Pot Factory", "https://www.youtube.com/watch?v=DMIGlU5DaZI", "DMIGlU5DaZI", 660, false, "/downloads/FactoryTrip2022/2025-10-31 한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 ⧸ Korean Clay Pot Factory/한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 ⧸ Korean Clay Pot Factory [DMIGlU5DaZI].mkv", false, 2, ~U[2025-10-31 07:50:01Z]] 08:34:57.990 [debug] QUERY OK source="sources" db=0.2ms idle=174.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:34:57.993 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=129.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] 08:34:58.006 [debug] QUERY OK source="media_items" db=8.2ms queue=3.9ms idle=132.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 [16829] 08:34:58.007 [debug] Current batch of media processed. Will check again in 1000ms 08:34:59.008 [debug] Current batch of media processed. Will check again in 1000ms 08:35:00.009 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "한 땀 한 땀, 세월이 만든 예술! 오직 손끝으로 완성된 세월의 작품. 한국 장인들의 전통 공예 몰아보기 / Korean Traditional Craft Binge Watch\n\n00:00 한국의 은주전자 만드는 과정\n23:39 한국의 전통 탈 만드는 과정\n39:23 한국의 범종 만드는 과정\n58:06 한국의 악기 소금 만드는 과정\n1:12:37 한국의 은장도 만드는 과정\n1:30:06 한국의 항아리 만드는 과정\n1:47:20 한국의 유기 그릇 만드는 과정\n1:55:40 한국의 화각공예품 만드는 과정\n2:04:11 한국의 한복 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#전통 #수작업 #장인 #공예 #공예품 #은주전자 #탈 #범종 #악기 #관악기 #소금 #은장도 #토기 #항아리 #유기 #놋그릇 #식기 #화각공예 #한복 #한복 #생산 #과정 #제작 #나무 #목공 #목공예 #수제 #핸드메이드 #기계 #전문가 #기술자 #제작 #silverkettle #silvercrafts #silver #woodworking #wood #woodcraft #woodwork #woodcarving #wooden #woodscraft #woodart #woods #woodworkingart #woodproducts #woodworker #woodworkingvideo #traditional #traditionalmasks #mask #woodenmask #brassitems #bell #hangingbell #bellmaking #brassbell #greatbell #temple #templebells #templebell #buddhistbell #churchbells #largebell #instruments #sogeum #windinstrument #bambooflute #traditionalinstruments #brassware #eunjangdo #silverknife #knifemaking #knife #knifesmith #blacksmith #traditionalknife #earthenware #earthenpot #jar #oxhorn #horn #hanbok #koreanstyle #making #production #korean #craft #crafts #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #master #process #asmr", "duration" => 8591, "filename" => "/downloads/FactoryTrip2022/2025-10-23 한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 ⧸ Korean Traditional Craft Compilation/한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 ⧸ Korean Traditional Craft Compilation [EaHG0sIgmsM].mkv", "id" => "EaHG0sIgmsM", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=EaHG0sIgmsM", "playlist_index" => 9, "timestamp" => 1761206427, "title" => "한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 / Korean Traditional Craft Compilation", "upload_date" => "20251023"} 08:35:00.010 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=566.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [2] 08:35:00.011 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [2] 08:35:00.012 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=567.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-23 08:00:27Z], 2] 08:35:00.029 [debug] QUERY OK source="media_items" db=16.5ms idle=568.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["한 땀 한 땀, 세월이 만든 예술! 오직 손끝으로 완성된 세월의 작품. 한국 장인들의 전통 공예 몰아보기 / Korean Traditional Craft Binge Watch\n\n00:00 한국의 은주전자 만드는 과정\n23:39 한국의 전통 탈 만드는 과정\n39:23 한국의 범종 만드는 과정\n58:06 한국의 악기 소금 만드는 과정\n1:12:37 한국의 은장도 만드는 과정\n1:30:06 한국의 항아리 만드는 과정\n1:47:20 한국의 유기 그릇 만드는 과정\n1:55:40 한국의 화각공예품 만드는 과정\n2:04:11 한국의 한복 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#전통 #수작업 #장인 #공예 #공예품 #은주전자 #탈 #범종 #악기 #관악기 #소금 #은장도 #토기 #항아리 #유기 #놋그릇 #식기 #화각공예 #한복 #한복 #생산 #과정 #제작 #나무 #목공 #목공예 #수제 #핸드메이드 #기계 #전문가 #기술자 #제작 #silverkettle #silvercrafts #silver #woodworking #wood #woodcraft #woodwork #woodcarving #wooden #woodscraft #woodart #woods #woodworkingart #woodproducts #woodworker #woodworkingvideo #traditional #traditionalmasks #mask #woodenmask #brassitems #bell #hangingbell #bellmaking #brassbell #greatbell #temple #templebells #templebell #buddhistbell #churchbells #largebell #instruments #sogeum #windinstrument #bambooflute #traditionalinstruments #brassware #eunjangdo #silverknife #knifemaking #knife #knifesmith #blacksmith #traditionalknife #earthenware #earthenpot #jar #oxhorn #horn #hanbok #koreanstyle #making #production #korean #craft #crafts #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #master #process #asmr", "한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 / Korean Traditional Craft Compilation", "111ab3ec-cea8-4073-a28f-c17b3a1a35e9", "https://www.youtube.com/watch?v=EaHG0sIgmsM", "EaHG0sIgmsM", false, 8591, false, 9, "/downloads/FactoryTrip2022/2025-10-23 한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 ⧸ Korean Traditional Craft Compilation/한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 ⧸ Korean Traditional Craft Compilation [EaHG0sIgmsM].mkv", false, false, 2, [], 98, ~U[2025-10-23 08:00:27Z], ~U[2025-12-24 08:35:00Z], ~U[2025-12-24 08:35:00Z], "한 땀 한 땀, 세월이 만든 예술! 오직 손끝으로 완성된 세월의 작품. 한국 장인들의 전통 공예 몰아보기 / Korean Traditional Craft Binge Watch\n\n00:00 한국의 은주전자 만드는 과정\n23:39 한국의 전통 탈 만드는 과정\n39:23 한국의 범종 만드는 과정\n58:06 한국의 악기 소금 만드는 과정\n1:12:37 한국의 은장도 만드는 과정\n1:30:06 한국의 항아리 만드는 과정\n1:47:20 한국의 유기 그릇 만드는 과정\n1:55:40 한국의 화각공예품 만드는 과정\n2:04:11 한국의 한복 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#전통 #수작업 #장인 #공예 #공예품 #은주전자 #탈 #범종 #악기 #관악기 #소금 #은장도 #토기 #항아리 #유기 #놋그릇 #식기 #화각공예 #한복 #한복 #생산 #과정 #제작 #나무 #목공 #목공예 #수제 #핸드메이드 #기계 #전문가 #기술자 #제작 #silverkettle #silvercrafts #silver #woodworking #wood #woodcraft #woodwork #woodcarving #wooden #woodscraft #woodart #woods #woodworkingart #woodproducts #woodworker #woodworkingvideo #traditional #traditionalmasks #mask #woodenmask #brassitems #bell #hangingbell #bellmaking #brassbell #greatbell #temple #templebells #templebell #buddhistbell #churchbells #largebell #instruments #sogeum #windinstrument #bambooflute #traditionalinstruments #brassware #eunjangdo #silverknife #knifemaking #knife #knifesmith #blacksmith #traditionalknife #earthenware #earthenpot #jar #oxhorn #horn #hanbok #koreanstyle #making #production #korean #craft #crafts #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #master #process #asmr", "한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 / Korean Traditional Craft Compilation", "https://www.youtube.com/watch?v=EaHG0sIgmsM", "EaHG0sIgmsM", 8591, false, "/downloads/FactoryTrip2022/2025-10-23 한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 ⧸ Korean Traditional Craft Compilation/한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 ⧸ Korean Traditional Craft Compilation [EaHG0sIgmsM].mkv", false, 2, ~U[2025-10-23 08:00:27Z]] 08:35:00.030 [debug] QUERY OK source="sources" db=0.2ms idle=208.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:35:00.030 [debug] QUERY OK source="media_profiles" db=0.1ms idle=19.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] 08:35:00.031 [debug] QUERY OK source="media_items" db=0.2ms idle=19.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 [15309] 08:35:00.031 [debug] Current batch of media processed. Will check again in 1000ms 08:35:00.867 [info] {"source":"oban","duration":334,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:35:01.032 [debug] Current batch of media processed. Will check again in 1000ms 08:35:02.033 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#테이프 #점착테이프 #공장 #패키지 #포장용테이프 #opp테이프 #박스테이프 #컬러테이프 #박스포장 #원준테이프 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #tape #tapes #packingtape #packagingtape #adhesivetapes #adhesivetape #tapemaking #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 647, "filename" => "/downloads/FactoryTrip2022/2025-10-17 붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 ⧸ Korean Tape Factory/붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 ⧸ Korean Tape Factory [sGppaFD-3-A].mkv", "id" => "sGppaFD-3-A", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=sGppaFD-3-A", "playlist_index" => 10, "timestamp" => 1760687701, "title" => "붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 / Korean Tape Factory", "upload_date" => "20251017"} 08:35:02.034 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1166.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 (?)) [2] 08:35:02.034 [debug] QUERY OK source="sources" db=0.2ms idle=591.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:35:02.035 [debug] QUERY OK source="media_items" db=0.7ms idle=591.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-17 07:55:01Z], 2] 08:35:02.037 [debug] QUERY OK source="media_items" db=1.0ms idle=592.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#테이프 #점착테이프 #공장 #패키지 #포장용테이프 #opp테이프 #박스테이프 #컬러테이프 #박스포장 #원준테이프 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #tape #tapes #packingtape #packagingtape #adhesivetapes #adhesivetape #tapemaking #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 / Korean Tape Factory", "3b680366-f42e-4f46-bffd-e52e724bf8bd", "https://www.youtube.com/watch?v=sGppaFD-3-A", "sGppaFD-3-A", false, 647, false, 10, "/downloads/FactoryTrip2022/2025-10-17 붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 ⧸ Korean Tape Factory/붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 ⧸ Korean Tape Factory [sGppaFD-3-A].mkv", false, false, 2, [], 98, ~U[2025-10-17 07:55:01Z], ~U[2025-12-24 08:35:02Z], ~U[2025-12-24 08:35:02Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#테이프 #점착테이프 #공장 #패키지 #포장용테이프 #opp테이프 #박스테이프 #컬러테이프 #박스포장 #원준테이프 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #tape #tapes #packingtape #packagingtape #adhesivetapes #adhesivetape #tapemaking #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 / Korean Tape Factory", "https://www.youtube.com/watch?v=sGppaFD-3-A", "sGppaFD-3-A", 647, false, "/downloads/FactoryTrip2022/2025-10-17 붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 ⧸ Korean Tape Factory/붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 ⧸ Korean Tape Factory [sGppaFD-3-A].mkv", false, 2, ~U[2025-10-17 07:55:01Z]] 08:35:02.038 [debug] QUERY OK source="sources" db=0.3ms idle=212.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" = ?) [2] 08:35:02.038 [debug] QUERY OK source="media_profiles" db=0.3ms idle=3.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:35:02.039 [debug] QUERY OK source="media_items" db=0.2ms 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 [14158] 08:35:02.039 [debug] Current batch of media processed. Will check again in 1000ms 08:35:03.040 [debug] Current batch of media processed. Will check again in 1000ms 08:35:04.041 [debug] Current batch of media processed. Will check again in 1000ms 08:35:05.042 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#해금 #악기 #전통 #가야금 #현악기 #악기장 #전통악기 #국악기 #류충선국악기연구원 #거문고 #관악기 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #haegeum #geomungo #gayageum #traditionalinstruments #traditional #stringinstrument #stringinstruments #koreanmusicalinstrument #korean #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 986, "filename" => "/downloads/FactoryTrip2022/2025-10-10 단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop/단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop [vkBpmu_JJz4].mkv", "id" => "vkBpmu_JJz4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=vkBpmu_JJz4", "playlist_index" => 11, "timestamp" => 1760083272, "title" => "단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 / Korean traditional instrument workshop", "upload_date" => "20251010"} 08:35:05.043 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1599.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 (?)) [2] 08:35:05.043 [debug] QUERY OK source="sources" db=0.1ms idle=1.6e3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:35:05.044 [debug] QUERY OK source="media_items" db=0.7ms idle=1600.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-10 08:01:12Z], 2] 08:35:05.046 [debug] QUERY OK source="media_items" db=1.1ms idle=1215.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#해금 #악기 #전통 #가야금 #현악기 #악기장 #전통악기 #국악기 #류충선국악기연구원 #거문고 #관악기 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #haegeum #geomungo #gayageum #traditionalinstruments #traditional #stringinstrument #stringinstruments #koreanmusicalinstrument #korean #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 / Korean traditional instrument workshop", "a8e1d790-7ddc-461f-8576-2c6a3ceeec13", "https://www.youtube.com/watch?v=vkBpmu_JJz4", "vkBpmu_JJz4", false, 986, false, 11, "/downloads/FactoryTrip2022/2025-10-10 단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop/단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop [vkBpmu_JJz4].mkv", false, false, 2, [], 98, ~U[2025-10-10 08:01:12Z], ~U[2025-12-24 08:35:05Z], ~U[2025-12-24 08:35:05Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#해금 #악기 #전통 #가야금 #현악기 #악기장 #전통악기 #국악기 #류충선국악기연구원 #거문고 #관악기 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #haegeum #geomungo #gayageum #traditionalinstruments #traditional #stringinstrument #stringinstruments #koreanmusicalinstrument #korean #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 / Korean traditional instrument workshop", "https://www.youtube.com/watch?v=vkBpmu_JJz4", "vkBpmu_JJz4", 986, false, "/downloads/FactoryTrip2022/2025-10-10 단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop/단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop [vkBpmu_JJz4].mkv", false, 2, ~U[2025-10-10 08:01:12Z]] 08:35:05.046 [debug] QUERY OK source="sources" db=0.2ms idle=214.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" = ?) [2] 08:35:05.047 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:35:05.047 [debug] QUERY OK source="media_items" db=0.2ms 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 [12825] 08:35:05.047 [debug] Current batch of media processed. Will check again in 1000ms 08:35:06.048 [debug] Current batch of media processed. Will check again in 1000ms 08:35:07.049 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#종이컵 #종이용기 #공장 #패키지 #음료컵 #팝콘컵 #종이그릇 #종이접시 #종이트레이 #종이도시락 #포장용기 #일회용 #일회용품 #아주 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #papercup #paperpackaging #papercupmachines #papercupmakingbusiness #papercupmachinery #papercupmachine #paperpackagingbusiness #papercupmaking #papercontainer #paperbox #papertray #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 815, "filename" => "/downloads/FactoryTrip2022/2025-10-03 하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 ⧸ Korean paper packaging factory/하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 ⧸ Korean paper packaging factory [xWuxdcnyrFE].mkv", "id" => "xWuxdcnyrFE", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=xWuxdcnyrFE", "playlist_index" => 12, "timestamp" => 1759478471, "title" => "하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 / Korean paper packaging factory", "upload_date" => "20251003"} 08:35:07.050 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=606.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 (?)) [2] 08:35:07.051 [debug] QUERY OK source="sources" db=0.1ms idle=607.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:35:07.052 [debug] QUERY OK source="media_items" db=0.8ms idle=607.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-03 08:01:11Z], 2] 08:35:07.053 [debug] QUERY OK source="media_items" db=1.0ms idle=608.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#종이컵 #종이용기 #공장 #패키지 #음료컵 #팝콘컵 #종이그릇 #종이접시 #종이트레이 #종이도시락 #포장용기 #일회용 #일회용품 #아주 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #papercup #paperpackaging #papercupmachines #papercupmakingbusiness #papercupmachinery #papercupmachine #paperpackagingbusiness #papercupmaking #papercontainer #paperbox #papertray #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 / Korean paper packaging factory", "680abcfb-67af-4e2c-9c89-fe6aae87b79f", "https://www.youtube.com/watch?v=xWuxdcnyrFE", "xWuxdcnyrFE", false, 815, false, 12, "/downloads/FactoryTrip2022/2025-10-03 하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 ⧸ Korean paper packaging factory/하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 ⧸ Korean paper packaging factory [xWuxdcnyrFE].mkv", false, false, 2, [], 98, ~U[2025-10-03 08:01:11Z], ~U[2025-12-24 08:35:07Z], ~U[2025-12-24 08:35:07Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#종이컵 #종이용기 #공장 #패키지 #음료컵 #팝콘컵 #종이그릇 #종이접시 #종이트레이 #종이도시락 #포장용기 #일회용 #일회용품 #아주 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #papercup #paperpackaging #papercupmachines #papercupmakingbusiness #papercupmachinery #papercupmachine #paperpackagingbusiness #papercupmaking #papercontainer #paperbox #papertray #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 / Korean paper packaging factory", "https://www.youtube.com/watch?v=xWuxdcnyrFE", "xWuxdcnyrFE", 815, false, "/downloads/FactoryTrip2022/2025-10-03 하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 ⧸ Korean paper packaging factory/하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 ⧸ Korean paper packaging factory [xWuxdcnyrFE].mkv", false, 2, ~U[2025-10-03 08:01:11Z]] 08:35:07.054 [debug] QUERY OK source="sources" db=0.2ms idle=218.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:35:07.054 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:35:07.055 [debug] QUERY OK source="media_items" db=0.2ms 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 [11552] 08:35:07.055 [debug] Current batch of media processed. Will check again in 1000ms 08:35:08.056 [debug] Current batch of media processed. Will check again in 1000ms 08:35:09.057 [debug] Current batch of media processed. Will check again in 1000ms 08:35:10.059 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#거문고 #가야금 #현악기 #전통 #악기장 #전통악기 #국악기 #진향국악기연구원 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #geomungo #gayageum #traditionalinstruments #traditional #stringinstrument #stringinstruments #koreanmusicalinstrument #korean #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 1359, "filename" => "/downloads/FactoryTrip2022/2025-09-26 나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop/나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop [NS2zceeIa-A].mkv", "id" => "NS2zceeIa-A", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=NS2zceeIa-A", "playlist_index" => 13, "timestamp" => 1758873300, "title" => "나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 / Korean traditional instrument workshop", "upload_date" => "20250926"} 08:35:10.059 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1615.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [2] 08:35:10.060 [debug] QUERY OK source="sources" db=0.2ms idle=1616.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:35:10.061 [debug] QUERY OK source="media_items" db=0.7ms idle=1616.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-26 07:55:00Z], 2] 08:35:10.062 [debug] QUERY OK source="media_items" db=1.1ms idle=1222.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#거문고 #가야금 #현악기 #전통 #악기장 #전통악기 #국악기 #진향국악기연구원 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #geomungo #gayageum #traditionalinstruments #traditional #stringinstrument #stringinstruments #koreanmusicalinstrument #korean #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 / Korean traditional instrument workshop", "d31fba8c-0858-4c9c-8402-0cdc66773d8e", "https://www.youtube.com/watch?v=NS2zceeIa-A", "NS2zceeIa-A", false, 1359, false, 13, "/downloads/FactoryTrip2022/2025-09-26 나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop/나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop [NS2zceeIa-A].mkv", false, false, 2, [], 98, ~U[2025-09-26 07:55:00Z], ~U[2025-12-24 08:35:10Z], ~U[2025-12-24 08:35:10Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#거문고 #가야금 #현악기 #전통 #악기장 #전통악기 #국악기 #진향국악기연구원 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #geomungo #gayageum #traditionalinstruments #traditional #stringinstrument #stringinstruments #koreanmusicalinstrument #korean #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 / Korean traditional instrument workshop", "https://www.youtube.com/watch?v=NS2zceeIa-A", "NS2zceeIa-A", 1359, false, "/downloads/FactoryTrip2022/2025-09-26 나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop/나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop [NS2zceeIa-A].mkv", false, 2, ~U[2025-09-26 07:55:00Z]] 08:35:10.063 [debug] QUERY OK source="sources" db=0.2ms idle=221.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:35:10.063 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms 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] 08:35:10.064 [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 [10289] 08:35:10.064 [debug] Current batch of media processed. Will check again in 1000ms 08:35:11.065 [debug] Current batch of media processed. Will check again in 1000ms 08:35:12.066 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 / Korean Wood Craft Binge Watch\n\n00:00 한국의 목탁 만드는 과정\n15:36 한국의 레진 테이블 만드는 과정\n41:56 한국의 당구 큐 만드는 과정\n55:47 한국의 업소용 소파 만드는 과정\n1:07:03 한국의 야구배트 만드는 과정\n1:13:10 한국의 독서대 만드는 과정\n1:24:13 한국의 소반 만드는 과정\n1:45:49 한국의 단소 만드는 과정\n1:58:24 한국의 특수목 거울 만드는 과정\n2:15:13 한국의 엔드그레인 도마 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#나무 #목공 #목공방 #목공예 #목공기계 #목탁 #레진 #레진공예 #레진아트 #레진테이블 #특수목 #당구큐 #소파 #수제 #야구 #야구배트 #독서대 #소반 #테이블 #반상 #나무테이블 #단소 #거울 #인테리어 #인테리어소품 #도마 #엔드그레인도마 #나무도마 #기계 #전문가 #기술자 #장인 #제작 #woodworking #wood #woodcraft #woodwork #woodcarving #wooden #woodscraft #woodart #woods #woodworkingart #woodproducts #woodworker #woodworkingtools #woodworkingtips #woodworkingvideo #moktak #woodblock #woodenbell #resinart #resin #resincrafts #resintable #billiardcue #billiards #sofa #couch #baseballbats #baseballbat #readingdesk #readingtable #bookholder #lectern #soban #woodtable #diningtable #instruments #danso #bambooflute #traditionalinstruments #interiordesign #mirror #endgrain #endgraincuttingboard #cuttingboards #cuttingboard #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "duration" => 9091, "filename" => "/downloads/FactoryTrip2022/2025-09-19 죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 ⧸ Ultimate Korean Woodcraft Compilation/죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 ⧸ Ultimate Korean Woodcraft Compilation [xoSdXqD1B74].mkv", "id" => "xoSdXqD1B74", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=xoSdXqD1B74", "playlist_index" => 14, "timestamp" => 1758268261, "title" => "죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 / Ultimate Korean Woodcraft Compilation", "upload_date" => "20250919"} 08:35:12.067 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=623.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 (?)) [2] 08:35:12.067 [debug] QUERY OK source="sources" db=0.2ms idle=624.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:35:12.068 [debug] QUERY OK source="media_items" db=0.7ms idle=624.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-19 07:51:01Z], 2] 08:35:12.070 [debug] QUERY OK source="media_items" db=1.2ms idle=625.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 / Korean Wood Craft Binge Watch\n\n00:00 한국의 목탁 만드는 과정\n15:36 한국의 레진 테이블 만드는 과정\n41:56 한국의 당구 큐 만드는 과정\n55:47 한국의 업소용 소파 만드는 과정\n1:07:03 한국의 야구배트 만드는 과정\n1:13:10 한국의 독서대 만드는 과정\n1:24:13 한국의 소반 만드는 과정\n1:45:49 한국의 단소 만드는 과정\n1:58:24 한국의 특수목 거울 만드는 과정\n2:15:13 한국의 엔드그레인 도마 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#나무 #목공 #목공방 #목공예 #목공기계 #목탁 #레진 #레진공예 #레진아트 #레진테이블 #특수목 #당구큐 #소파 #수제 #야구 #야구배트 #독서대 #소반 #테이블 #반상 #나무테이블 #단소 #거울 #인테리어 #인테리어소품 #도마 #엔드그레인도마 #나무도마 #기계 #전문가 #기술자 #장인 #제작 #woodworking #wood #woodcraft #woodwork #woodcarving #wooden #woodscraft #woodart #woods #woodworkingart #woodproducts #woodworker #woodworkingtools #woodworkingtips #woodworkingvideo #moktak #woodblock #woodenbell #resinart #resin #resincrafts #resintable #billiardcue #billiards #sofa #couch #baseballbats #baseballbat #readingdesk #readingtable #bookholder #lectern #soban #woodtable #diningtable #instruments #danso #bambooflute #traditionalinstruments #interiordesign #mirror #endgrain #endgraincuttingboard #cuttingboards #cuttingboard #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 / Ultimate Korean Woodcraft Compilation", "d5765f94-65d8-4678-be02-5ee8f0bdfa73", "https://www.youtube.com/watch?v=xoSdXqD1B74", "xoSdXqD1B74", false, 9091, false, 14, "/downloads/FactoryTrip2022/2025-09-19 죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 ⧸ Ultimate Korean Woodcraft Compilation/죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 ⧸ Ultimate Korean Woodcraft Compilation [xoSdXqD1B74].mkv", false, false, 2, [], 98, ~U[2025-09-19 07:51:01Z], ~U[2025-12-24 08:35:12Z], ~U[2025-12-24 08:35:12Z], "죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 / Korean Wood Craft Binge Watch\n\n00:00 한국의 목탁 만드는 과정\n15:36 한국의 레진 테이블 만드는 과정\n41:56 한국의 당구 큐 만드는 과정\n55:47 한국의 업소용 소파 만드는 과정\n1:07:03 한국의 야구배트 만드는 과정\n1:13:10 한국의 독서대 만드는 과정\n1:24:13 한국의 소반 만드는 과정\n1:45:49 한국의 단소 만드는 과정\n1:58:24 한국의 특수목 거울 만드는 과정\n2:15:13 한국의 엔드그레인 도마 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#나무 #목공 #목공방 #목공예 #목공기계 #목탁 #레진 #레진공예 #레진아트 #레진테이블 #특수목 #당구큐 #소파 #수제 #야구 #야구배트 #독서대 #소반 #테이블 #반상 #나무테이블 #단소 #거울 #인테리어 #인테리어소품 #도마 #엔드그레인도마 #나무도마 #기계 #전문가 #기술자 #장인 #제작 #woodworking #wood #woodcraft #woodwork #woodcarving #wooden #woodscraft #woodart #woods #woodworkingart #woodproducts #woodworker #woodworkingtools #woodworkingtips #woodworkingvideo #moktak #woodblock #woodenbell #resinart #resin #resincrafts #resintable #billiardcue #billiards #sofa #couch #baseballbats #baseballbat #readingdesk #readingtable #bookholder #lectern #soban #woodtable #diningtable #instruments #danso #bambooflute #traditionalinstruments #interiordesign #mirror #endgrain #endgraincuttingboard #cuttingboards #cuttingboard #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 / Ultimate Korean Woodcraft Compilation", "https://www.youtube.com/watch?v=xoSdXqD1B74", "xoSdXqD1B74", 9091, false, "/downloads/FactoryTrip2022/2025-09-19 죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 ⧸ Ultimate Korean Woodcraft Compilation/죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 ⧸ Ultimate Korean Woodcraft Compilation [xoSdXqD1B74].mkv", false, 2, ~U[2025-09-19 07:51:01Z]] 08:35:12.071 [debug] QUERY OK source="sources" db=0.1ms idle=225.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:35:12.071 [debug] QUERY OK source="media_profiles" db=0.2ms idle=4.0ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:35:12.072 [debug] QUERY OK source="media_items" db=0.2ms 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 [9024] 08:35:12.072 [debug] Current batch of media processed. Will check again in 1000ms 08:35:13.073 [debug] Current batch of media processed. Will check again in 1000ms 08:35:14.074 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n#쇼핑백 #종이가방 #공장 #종이백 #종이포대 #신풍쇼핑백 #재단 #인쇄 #코팅 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #paper #bag #paperbag #paperbags #paperbagmakingmachine #paperbagmaking #shoppingbag #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 653, "filename" => "/downloads/FactoryTrip2022/2025-09-12 수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 ⧸ Korean paperbag factory/수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 ⧸ Korean paperbag factory [q7bETTLIyn4].mkv", "id" => "q7bETTLIyn4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=q7bETTLIyn4", "playlist_index" => 15, "timestamp" => 1757664064, "title" => "수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 / Korean paperbag factory", "upload_date" => "20250912"} 08:35:14.075 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=631.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 (?)) [2] 08:35:14.076 [debug] QUERY OK source="sources" db=0.2ms idle=632.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:35:14.077 [debug] QUERY OK source="media_items" db=0.6ms idle=632.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-12 08:01:04Z], 2] 08:35:14.078 [debug] QUERY OK source="media_items" db=1.1ms idle=633.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n#쇼핑백 #종이가방 #공장 #종이백 #종이포대 #신풍쇼핑백 #재단 #인쇄 #코팅 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #paper #bag #paperbag #paperbags #paperbagmakingmachine #paperbagmaking #shoppingbag #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 / Korean paperbag factory", "bbe0f581-2a32-45ab-93a3-999951ba64f6", "https://www.youtube.com/watch?v=q7bETTLIyn4", "q7bETTLIyn4", false, 653, false, 15, "/downloads/FactoryTrip2022/2025-09-12 수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 ⧸ Korean paperbag factory/수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 ⧸ Korean paperbag factory [q7bETTLIyn4].mkv", false, false, 2, [], 98, ~U[2025-09-12 08:01:04Z], ~U[2025-12-24 08:35:14Z], ~U[2025-12-24 08:35:14Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n#쇼핑백 #종이가방 #공장 #종이백 #종이포대 #신풍쇼핑백 #재단 #인쇄 #코팅 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #paper #bag #paperbag #paperbags #paperbagmakingmachine #paperbagmaking #shoppingbag #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 / Korean paperbag factory", "https://www.youtube.com/watch?v=q7bETTLIyn4", "q7bETTLIyn4", 653, false, "/downloads/FactoryTrip2022/2025-09-12 수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 ⧸ Korean paperbag factory/수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 ⧸ Korean paperbag factory [q7bETTLIyn4].mkv", false, 2, ~U[2025-09-12 08:01:04Z]] 08:35:14.079 [debug] QUERY OK source="sources" db=0.2ms idle=229.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:35:14.079 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:35:14.080 [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 [3297] 08:35:14.080 [debug] Current batch of media processed. Will check again in 1000ms 08:35:15.081 [debug] Current batch of media processed. Will check again in 1000ms 08:35:16.082 [debug] Current batch of media processed. Will check again in 1000ms 08:35:17.084 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n\n#목공 #테이블 #특수목 #목재 #레진 #레진공예 #레진테이블 #우드 #우드슬랩 #식탁 #리폼 #고급 #페스툴 #단하나의나무 #장인 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #wood #woodworking #woodwork #woodworkingart #woodart #woodcraft #woodworker #woodworkingvideo #resin #resinart #resincrafts #resintable #woodtable #exoticwood #reform #restoration #restoredfurniture #festool #making #makingvideos #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 1574, "filename" => "/downloads/FactoryTrip2022/2025-09-05 죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 ⧸ Korean woodworking craftsman/죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 ⧸ Korean woodworking craftsman [HoVtRQ62b40].mkv", "id" => "HoVtRQ62b40", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=HoVtRQ62b40", "playlist_index" => 16, "timestamp" => 1757059231, "title" => "죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 / Korean woodworking craftsman", "upload_date" => "20250905"} 08:35:17.085 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1641.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 (?)) [2] 08:35:17.085 [debug] QUERY OK source="sources" db=0.2ms idle=1641.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:35:17.086 [debug] QUERY OK source="media_items" db=0.7ms idle=1642.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-05 08:00:31Z], 2] 08:35:17.088 [debug] QUERY OK source="media_items" db=1.2ms idle=1233.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n\n#목공 #테이블 #특수목 #목재 #레진 #레진공예 #레진테이블 #우드 #우드슬랩 #식탁 #리폼 #고급 #페스툴 #단하나의나무 #장인 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #wood #woodworking #woodwork #woodworkingart #woodart #woodcraft #woodworker #woodworkingvideo #resin #resinart #resincrafts #resintable #woodtable #exoticwood #reform #restoration #restoredfurniture #festool #making #makingvideos #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 / Korean woodworking craftsman", "05a0f248-385a-4759-8463-1305e54d46de", "https://www.youtube.com/watch?v=HoVtRQ62b40", "HoVtRQ62b40", false, 1574, false, 16, "/downloads/FactoryTrip2022/2025-09-05 죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 ⧸ Korean woodworking craftsman/죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 ⧸ Korean woodworking craftsman [HoVtRQ62b40].mkv", false, false, 2, [], 98, ~U[2025-09-05 08:00:31Z], ~U[2025-12-24 08:35:17Z], ~U[2025-12-24 08:35:17Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n\n#목공 #테이블 #특수목 #목재 #레진 #레진공예 #레진테이블 #우드 #우드슬랩 #식탁 #리폼 #고급 #페스툴 #단하나의나무 #장인 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #wood #woodworking #woodwork #woodworkingart #woodart #woodcraft #woodworker #woodworkingvideo #resin #resinart #resincrafts #resintable #woodtable #exoticwood #reform #restoration #restoredfurniture #festool #making #makingvideos #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 / Korean woodworking craftsman", "https://www.youtube.com/watch?v=HoVtRQ62b40", "HoVtRQ62b40", 1574, false, "/downloads/FactoryTrip2022/2025-09-05 죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 ⧸ Korean woodworking craftsman/죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 ⧸ Korean woodworking craftsman [HoVtRQ62b40].mkv", false, 2, ~U[2025-09-05 08:00:31Z]] 08:35:17.088 [debug] QUERY OK source="sources" db=0.1ms idle=233.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:35:17.089 [debug] QUERY OK source="media_profiles" db=0.1ms idle=3.9ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:35:17.089 [debug] QUERY OK source="media_items" db=0.2ms 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 [318] 08:35:17.089 [debug] Current batch of media processed. Will check again in 1000ms 08:35:18.090 [debug] Current batch of media processed. Will check again in 1000ms 08:35:19.091 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 / Korean Leather Craft Binge Watch\n\n00:00 한국의 야구글러브 만드는 과정\n19:55 한국의 명품가방 리폼 과정\n53:31 한국의 소파 만드는 과정\n1:08:11 한국의 수제화 만드는 과정\n1:26:19 한국의 다이어리 만드는 과정\n1:41:24 한국의 북 만드는 과정\n1:58:24 한국의 카드지갑 만드는 과정\n2:10:40 한국의 등산화 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#가죽 #가죽공예 #가죽공방 #야구글러브 #가죽가방 #명품 #명품가방 #명품가방수선 #명품가방리폼 #리폼 #수선 #소파 #가죽소파 #수제화 #신발 #가죽신발 #다이어리 #북 #악기 #카드지갑 #지갑 #등산화 #공정 #과정 #기계 #전문가 #기술자 #장인 #제작 #leather #leathercraft #leatherworking #leatherworker #leathershoes #leatherbag #leatherproducts #leathercompany #baseballglove #baseballgloves #restoration #reform #sofa #couch #leathershoes #shoemaker #shoemaking #diary #planner #instruments #drums #koreandrum #traditionalinstruments #wallet #leatherwallets #leatherwallet #cardwallet #leathercardholder #hikingshoes #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "duration" => 9463, "filename" => "/downloads/FactoryTrip2022/2025-08-29 가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 ⧸ Korean Leather Craft Compilation/가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 ⧸ Korean Leather Craft Compilation [4SC6qyqBmM4].mkv", "id" => "4SC6qyqBmM4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=4SC6qyqBmM4", "playlist_index" => 17, "timestamp" => 1756454406, "title" => "가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 / Korean Leather Craft Compilation", "upload_date" => "20250829"} 08:35:19.092 [debug] QUERY OK source="sources" db=0.4ms queue=0.1ms idle=648.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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 (?)) [2] 08:35:19.093 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=649.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:35:19.094 [debug] QUERY OK source="media_items" db=0.7ms idle=649.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-29 08:00:06Z], 2] 08:35:19.096 [debug] QUERY OK source="media_items" db=1.1ms idle=650.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 / Korean Leather Craft Binge Watch\n\n00:00 한국의 야구글러브 만드는 과정\n19:55 한국의 명품가방 리폼 과정\n53:31 한국의 소파 만드는 과정\n1:08:11 한국의 수제화 만드는 과정\n1:26:19 한국의 다이어리 만드는 과정\n1:41:24 한국의 북 만드는 과정\n1:58:24 한국의 카드지갑 만드는 과정\n2:10:40 한국의 등산화 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#가죽 #가죽공예 #가죽공방 #야구글러브 #가죽가방 #명품 #명품가방 #명품가방수선 #명품가방리폼 #리폼 #수선 #소파 #가죽소파 #수제화 #신발 #가죽신발 #다이어리 #북 #악기 #카드지갑 #지갑 #등산화 #공정 #과정 #기계 #전문가 #기술자 #장인 #제작 #leather #leathercraft #leatherworking #leatherworker #leathershoes #leatherbag #leatherproducts #leathercompany #baseballglove #baseballgloves #restoration #reform #sofa #couch #leathershoes #shoemaker #shoemaking #diary #planner #instruments #drums #koreandrum #traditionalinstruments #wallet #leatherwallets #leatherwallet #cardwallet #leathercardholder #hikingshoes #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 / Korean Leather Craft Compilation", "0420e0bd-e0cb-44b3-a8b9-96f1d2b118f8", "https://www.youtube.com/watch?v=4SC6qyqBmM4", "4SC6qyqBmM4", false, 9463, false, 17, "/downloads/FactoryTrip2022/2025-08-29 가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 ⧸ Korean Leather Craft Compilation/가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 ⧸ Korean Leather Craft Compilation [4SC6qyqBmM4].mkv", false, false, 2, [], 98, ~U[2025-08-29 08:00:06Z], ~U[2025-12-24 08:35:19Z], ~U[2025-12-24 08:35:19Z], "가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 / Korean Leather Craft Binge Watch\n\n00:00 한국의 야구글러브 만드는 과정\n19:55 한국의 명품가방 리폼 과정\n53:31 한국의 소파 만드는 과정\n1:08:11 한국의 수제화 만드는 과정\n1:26:19 한국의 다이어리 만드는 과정\n1:41:24 한국의 북 만드는 과정\n1:58:24 한국의 카드지갑 만드는 과정\n2:10:40 한국의 등산화 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#가죽 #가죽공예 #가죽공방 #야구글러브 #가죽가방 #명품 #명품가방 #명품가방수선 #명품가방리폼 #리폼 #수선 #소파 #가죽소파 #수제화 #신발 #가죽신발 #다이어리 #북 #악기 #카드지갑 #지갑 #등산화 #공정 #과정 #기계 #전문가 #기술자 #장인 #제작 #leather #leathercraft #leatherworking #leatherworker #leathershoes #leatherbag #leatherproducts #leathercompany #baseballglove #baseballgloves #restoration #reform #sofa #couch #leathershoes #shoemaker #shoemaking #diary #planner #instruments #drums #koreandrum #traditionalinstruments #wallet #leatherwallets #leatherwallet #cardwallet #leathercardholder #hikingshoes #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 / Korean Leather Craft Compilation", "https://www.youtube.com/watch?v=4SC6qyqBmM4", "4SC6qyqBmM4", 9463, false, "/downloads/FactoryTrip2022/2025-08-29 가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 ⧸ Korean Leather Craft Compilation/가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 ⧸ Korean Leather Craft Compilation [4SC6qyqBmM4].mkv", false, 2, ~U[2025-08-29 08:00:06Z]] 08:35:19.096 [debug] QUERY OK source="sources" db=0.3ms idle=236.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:35:19.097 [debug] QUERY OK source="media_profiles" db=0.3ms idle=4.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:35:19.098 [debug] QUERY OK source="media_items" db=0.4ms idle=4.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 [319] 08:35:19.098 [debug] Current batch of media processed. Will check again in 1000ms 08:35:20.099 [debug] Current batch of media processed. Will check again in 1000ms 08:35:21.100 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#서예 #붓 #필방 #서예용품 #캘리그라피 #세필붓 #채색붓 #서예붓 #천연모붓 #족제비모붓 #수제붓 #정호당필방 #전문가 #기술자 #장인 #필장 #공방 #공장 #제조 #과정 #생산 #제작 #메이킹 #brush #writingbrush #calligraphybrush #paintingbrushes #paintingbrush #calligraphy #brushmarkers #handmade #handmadebrush #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 957, "filename" => "/downloads/FactoryTrip2022/2025-08-22 족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 ⧸ Korean Brush Workshop/족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 ⧸ Korean Brush Workshop [2HiSKOQtlXg].mkv", "id" => "2HiSKOQtlXg", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=2HiSKOQtlXg", "playlist_index" => 18, "timestamp" => 1755849603, "title" => "족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 / Korean Brush Workshop", "upload_date" => "20250822"} 08:35:21.101 [debug] QUERY OK source="sources" db=0.2ms idle=657.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 (?)) [2] 08:35:21.101 [debug] QUERY OK source="sources" db=0.2ms idle=657.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:35:21.102 [debug] QUERY OK source="media_items" db=0.6ms idle=658.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-22 08:00:03Z], 2] 08:35:21.105 [debug] QUERY OK source="media_items" db=2.7ms idle=659.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#서예 #붓 #필방 #서예용품 #캘리그라피 #세필붓 #채색붓 #서예붓 #천연모붓 #족제비모붓 #수제붓 #정호당필방 #전문가 #기술자 #장인 #필장 #공방 #공장 #제조 #과정 #생산 #제작 #메이킹 #brush #writingbrush #calligraphybrush #paintingbrushes #paintingbrush #calligraphy #brushmarkers #handmade #handmadebrush #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 / Korean Brush Workshop", "f5252023-1489-4997-ac06-c8c2d64dc0e1", "https://www.youtube.com/watch?v=2HiSKOQtlXg", "2HiSKOQtlXg", false, 957, false, 18, "/downloads/FactoryTrip2022/2025-08-22 족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 ⧸ Korean Brush Workshop/족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 ⧸ Korean Brush Workshop [2HiSKOQtlXg].mkv", false, false, 2, [], 98, ~U[2025-08-22 08:00:03Z], ~U[2025-12-24 08:35:21Z], ~U[2025-12-24 08:35:21Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#서예 #붓 #필방 #서예용품 #캘리그라피 #세필붓 #채색붓 #서예붓 #천연모붓 #족제비모붓 #수제붓 #정호당필방 #전문가 #기술자 #장인 #필장 #공방 #공장 #제조 #과정 #생산 #제작 #메이킹 #brush #writingbrush #calligraphybrush #paintingbrushes #paintingbrush #calligraphy #brushmarkers #handmade #handmadebrush #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 / Korean Brush Workshop", "https://www.youtube.com/watch?v=2HiSKOQtlXg", "2HiSKOQtlXg", 957, false, "/downloads/FactoryTrip2022/2025-08-22 족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 ⧸ Korean Brush Workshop/족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 ⧸ Korean Brush Workshop [2HiSKOQtlXg].mkv", false, 2, ~U[2025-08-22 08:00:03Z]] 08:35:21.106 [debug] QUERY OK source="sources" db=0.2ms idle=241.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" = ?) [2] 08:35:21.106 [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] 08:35:21.107 [debug] QUERY OK source="media_items" db=0.2ms idle=5.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 [320] 08:35:21.107 [debug] Current batch of media processed. Will check again in 1000ms 08:35:21.776 [info] {"source":"oban","duration":1767,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:35:22.108 [debug] Current batch of media processed. Will check again in 1000ms 08:35:23.109 [debug] Current batch of media processed. Will check again in 1000ms 08:35:24.110 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVBc3WC_WNuI7xqcHKXrTbk4\n\n#김밥 #식품 #공장 #냉동김밥 #식품공장 #야채김밥 #풀드포크김밥 #불고기김밥 #제육김밥 #참치김밥 #진미채김밥 #이노하스 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #kfood #kimbap #gimbap #food #foodfactory #bulgogikimbap #vegetablekimbap #pulledporkkimbap #tunamayokimbap #kimchikimbap #innohas #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "duration" => 625, "filename" => "/downloads/FactoryTrip2022/2025-08-15 케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 ⧸ Korean food factory/케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 ⧸ Korean food factory [go-BKd4XWhs].mkv", "id" => "go-BKd4XWhs", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=go-BKd4XWhs", "playlist_index" => 19, "timestamp" => 1755244855, "title" => "케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 / Korean food factory", "upload_date" => "20250815"} 08:35:24.111 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=1667.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 (?)) [2] 08:35:24.111 [debug] QUERY OK source="sources" db=0.2ms idle=1668.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:35:24.112 [debug] QUERY OK source="media_items" db=0.6ms idle=1243.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-15 08:00:55Z], 2] 08:35:24.114 [debug] QUERY OK source="media_items" db=0.9ms idle=669.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVBc3WC_WNuI7xqcHKXrTbk4\n\n#김밥 #식품 #공장 #냉동김밥 #식품공장 #야채김밥 #풀드포크김밥 #불고기김밥 #제육김밥 #참치김밥 #진미채김밥 #이노하스 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #kfood #kimbap #gimbap #food #foodfactory #bulgogikimbap #vegetablekimbap #pulledporkkimbap #tunamayokimbap #kimchikimbap #innohas #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 / Korean food factory", "157c7a1b-efc2-48eb-a3f1-3b12db83c4f8", "https://www.youtube.com/watch?v=go-BKd4XWhs", "go-BKd4XWhs", false, 625, false, 19, "/downloads/FactoryTrip2022/2025-08-15 케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 ⧸ Korean food factory/케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 ⧸ Korean food factory [go-BKd4XWhs].mkv", false, false, 2, [], 98, ~U[2025-08-15 08:00:55Z], ~U[2025-12-24 08:35:24Z], ~U[2025-12-24 08:35:24Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVBc3WC_WNuI7xqcHKXrTbk4\n\n#김밥 #식품 #공장 #냉동김밥 #식품공장 #야채김밥 #풀드포크김밥 #불고기김밥 #제육김밥 #참치김밥 #진미채김밥 #이노하스 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #kfood #kimbap #gimbap #food #foodfactory #bulgogikimbap #vegetablekimbap #pulledporkkimbap #tunamayokimbap #kimchikimbap #innohas #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 / Korean food factory", "https://www.youtube.com/watch?v=go-BKd4XWhs", "go-BKd4XWhs", 625, false, "/downloads/FactoryTrip2022/2025-08-15 케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 ⧸ Korean food factory/케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 ⧸ Korean food factory [go-BKd4XWhs].mkv", false, 2, ~U[2025-08-15 08:00:55Z]] 08:35:24.114 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [2] 08:35:24.114 [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] 08:35:24.115 [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 [321] 08:35:24.115 [debug] Current batch of media processed. Will check again in 1000ms 08:35:25.116 [debug] Current batch of media processed. Will check again in 1000ms 08:35:25.350 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@FactoryTrip2022 --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/FactoryTrip2022/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/60/00/6000d19d6c6e8984727959ca9759e7aec231946ed95fcc2fe94051f0577d8c41.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/0f/11/0f11b029743cd0c7d30f79b629faa5669c2b662d454c4c44b7610a317c31226e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 101 with: 08:35:25.352 [debug] Gracefully stopping file follower 08:35:25.352 [debug] QUERY OK source="sources" db=0.4ms idle=1238.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 (?)) [2] 08:35:25.353 [debug] QUERY OK source="sources" db=0.1ms idle=1238.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:35:25.354 [debug] QUERY OK source="media_items" db=0.7ms idle=1238.3ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-19 07:50:00Z], 2] 08:35:25.355 [debug] QUERY OK source="media_items" db=0.9ms idle=1238.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 / Top 10 Most-Watched Manufacturing Processes of 2025! Inside Korea’s Incredible Factories\n\n00:00 한국의 캠핑카 만드는 과정\n23:25 한국의 맷돌 만드는 과정\n39:36 한국의 낚시바늘 만드는 과정\n50:39 한국의 낚시대 만드는 과정\n1:06:53 한국의 목탁 만드는 과정\n1:22:06 한국의 레진 테이블 만드는 과정\n1:48:22 한국의 육포 만드는 과정\n1:59:34 한국의 멀티탭 만드는 과정\n2:10:38 한국의 비누 만드는 과정\n2:19:03 한국의 범종 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#캠핑카 #캠퍼 #맷돌 #낚시 #낚시용품 #낚시바늘 #낚시대 #목탁 #레진 #레진테이블 #테이블 #육포 #멀티탭 #비누 #범종 #식품공장 #목공 #우드워커 #공장 #공방 #기계 #전문가 #기술자 #장인 #메이킹 #제조 #생산 #제작 #camper #campervan #campingcar #milestone #milestones #stoneware #fishing #fishingequipment #fishinghook #fishingrod #fishingrods #moktak #woodenclapper #woodenfish #woodworking #woodwork #woodscraft #woodart #woodworkingart #woodcraft #resintable #woodtable #resinart #beefjerky #jerky #powerstrips #powerbar #extensioncord #soap #soaps #soapmaking #bell #bronzebell #templebells #templebell #casting #foodfactory #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 / Inside Korea’s Incredible Factories", "d7e25cc5-9c78-4266-9c13-6009784226e4", "https://www.youtube.com/watch?v=JndvLYRWlvY", "JndvLYRWlvY", false, 9470, false, 1, "/downloads/FactoryTrip2022/2025-12-19 2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 ⧸ Inside Korea’s Incredible Factories/2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 ⧸ Inside Korea’s Incredible Factories [JndvLYRWlvY].mkv", false, false, 2, [], 98, ~U[2025-12-19 07:50:00Z], ~U[2025-12-24 08:35:25Z], ~U[2025-12-24 08:35:25Z], "2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 / Top 10 Most-Watched Manufacturing Processes of 2025! Inside Korea’s Incredible Factories\n\n00:00 한국의 캠핑카 만드는 과정\n23:25 한국의 맷돌 만드는 과정\n39:36 한국의 낚시바늘 만드는 과정\n50:39 한국의 낚시대 만드는 과정\n1:06:53 한국의 목탁 만드는 과정\n1:22:06 한국의 레진 테이블 만드는 과정\n1:48:22 한국의 육포 만드는 과정\n1:59:34 한국의 멀티탭 만드는 과정\n2:10:38 한국의 비누 만드는 과정\n2:19:03 한국의 범종 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#캠핑카 #캠퍼 #맷돌 #낚시 #낚시용품 #낚시바늘 #낚시대 #목탁 #레진 #레진테이블 #테이블 #육포 #멀티탭 #비누 #범종 #식품공장 #목공 #우드워커 #공장 #공방 #기계 #전문가 #기술자 #장인 #메이킹 #제조 #생산 #제작 #camper #campervan #campingcar #milestone #milestones #stoneware #fishing #fishingequipment #fishinghook #fishingrod #fishingrods #moktak #woodenclapper #woodenfish #woodworking #woodwork #woodscraft #woodart #woodworkingart #woodcraft #resintable #woodtable #resinart #beefjerky #jerky #powerstrips #powerbar #extensioncord #soap #soaps #soapmaking #bell #bronzebell #templebells #templebell #casting #foodfactory #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 / Inside Korea’s Incredible Factories", "https://www.youtube.com/watch?v=JndvLYRWlvY", "JndvLYRWlvY", 9470, false, "/downloads/FactoryTrip2022/2025-12-19 2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 ⧸ Inside Korea’s Incredible Factories/2025년 가장 많이 본 제조 과정 TOP 10! 한국 공장의 놀라운 기술력 몰아보기 ⧸ Inside Korea’s Incredible Factories [JndvLYRWlvY].mkv", false, 2, ~U[2025-12-19 07:50:00Z]] 08:35:25.356 [debug] QUERY OK source="sources" db=0.2ms idle=482.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:35:25.356 [debug] QUERY OK source="media_items" db=0.6ms 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[2025-12-12 07:50:01Z], 2] 08:35:25.358 [debug] QUERY OK source="media_items" db=0.9ms idle=3.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#프라이팬 #주방용품 #공장 #냄비 #후라이팬 #팬 #웍팬 #주방도구 #키친 #델라고 #러브쿡 #오일마스터 #기술자 #제조 #과정 #생산 #제작 #메이킹 #pan #frypan #fryingpan #cookingpan #cookware #kitchenware #pot #frypanmaking #cookwaremaking #skillet #dellago #oilmaster #lovecook #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 / Korean cookware factory", "6fe8d882-9a47-41a8-8cda-3ed58256ad7d", "https://www.youtube.com/watch?v=Qa2-1g1GPN4", "Qa2-1g1GPN4", false, 741, false, 2, "/downloads/FactoryTrip2022/2025-12-12 10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 ⧸ Korean cookware factory/10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 ⧸ Korean cookware factory [Qa2-1g1GPN4].mkv", false, false, 2, [], 98, ~U[2025-12-12 07:50:01Z], ~U[2025-12-24 08:35:25Z], ~U[2025-12-24 08:35:25Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#프라이팬 #주방용품 #공장 #냄비 #후라이팬 #팬 #웍팬 #주방도구 #키친 #델라고 #러브쿡 #오일마스터 #기술자 #제조 #과정 #생산 #제작 #메이킹 #pan #frypan #fryingpan #cookingpan #cookware #kitchenware #pot #frypanmaking #cookwaremaking #skillet #dellago #oilmaster #lovecook #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 / Korean cookware factory", "https://www.youtube.com/watch?v=Qa2-1g1GPN4", "Qa2-1g1GPN4", 741, false, "/downloads/FactoryTrip2022/2025-12-12 10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 ⧸ Korean cookware factory/10만 번의 마찰도 버티는 힘! 강인함으로 완성되는 프리미엄 프라이팬 만드는 과정. 한국의 주방용품 공장 ⧸ Korean cookware factory [Qa2-1g1GPN4].mkv", false, 2, ~U[2025-12-12 07:50:01Z]] 08:35:25.358 [debug] QUERY OK source="sources" db=0.3ms idle=4.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:35:25.359 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-12-05 07:50:00Z], 2] 08:35:25.360 [debug] QUERY OK source="media_items" db=0.9ms idle=3.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#의자 #사무용의자 #공장 #사무용가구 #컴퓨터의자 #인테리어의자 #카페의자 #책상의자 #메쉬의자 #학생의자 #스툴 #의자추천 #사출 #DSP #ERMON #기술자 #제조 #과정 #생산 #제작 #메이킹 #chair #chairs #officechair #officechairs #computerchair #chairmaking #injection #gamingchair #executivechair #stool #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 / Korean Chair Factory", "d675e7d2-a56d-475c-99d2-7453ee211a2a", "https://www.youtube.com/watch?v=jF72xiNqq6Q", "jF72xiNqq6Q", false, 696, false, 3, "/downloads/FactoryTrip2022/2025-12-05 30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 ⧸ Korean Chair Factory/30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 ⧸ Korean Chair Factory [jF72xiNqq6Q].mkv", false, false, 2, [], 98, ~U[2025-12-05 07:50:00Z], ~U[2025-12-24 08:35:25Z], ~U[2025-12-24 08:35:25Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#의자 #사무용의자 #공장 #사무용가구 #컴퓨터의자 #인테리어의자 #카페의자 #책상의자 #메쉬의자 #학생의자 #스툴 #의자추천 #사출 #DSP #ERMON #기술자 #제조 #과정 #생산 #제작 #메이킹 #chair #chairs #officechair #officechairs #computerchair #chairmaking #injection #gamingchair #executivechair #stool #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 / Korean Chair Factory", "https://www.youtube.com/watch?v=jF72xiNqq6Q", "jF72xiNqq6Q", 696, false, "/downloads/FactoryTrip2022/2025-12-05 30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 ⧸ Korean Chair Factory/30년 동안 600만 개의 의자를 만든 기술력! 사무용 의자는 이렇게 완성됩니다. 한국의 의자 공장 ⧸ Korean Chair Factory [jF72xiNqq6Q].mkv", false, 2, ~U[2025-12-05 07:50:00Z]] 08:35:25.361 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [2] 08:35:25.362 [debug] QUERY OK source="media_items" db=0.6ms 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[2025-11-28 07:50:01Z], 2] 08:35:25.363 [debug] QUERY OK source="media_items" db=0.8ms idle=3.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n\n#가죽 #가죽가방 #공방 #가죽공방 #남자가방 #서류가방 #가죽제품 #가죽소품 #가죽지갑 #카드지갑 #아스툴라 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #leather #leathercraft #leatherbag #leatherbags #leatherworking #leatherfashion #leatherwork #leatherworker #bagmaking #briefcase #briefbag #businesscase #korean #handmade #handmadecraft #handmadebag #machine #making #makingvideos #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 / Korean Leather Workshop", "c11026ba-d485-4cf5-8f76-1b713ec46972", "https://www.youtube.com/watch?v=sslv-jLNb0Y", "sslv-jLNb0Y", false, 1105, false, 4, "/downloads/FactoryTrip2022/2025-11-28 한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 ⧸ Korean Leather Workshop/한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 ⧸ Korean Leather Workshop [sslv-jLNb0Y].mkv", false, false, 2, [], 98, ~U[2025-11-28 07:50:01Z], ~U[2025-12-24 08:35:25Z], ~U[2025-12-24 08:35:25Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n\n#가죽 #가죽가방 #공방 #가죽공방 #남자가방 #서류가방 #가죽제품 #가죽소품 #가죽지갑 #카드지갑 #아스툴라 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #leather #leathercraft #leatherbag #leatherbags #leatherworking #leatherfashion #leatherwork #leatherworker #bagmaking #briefcase #briefbag #businesscase #korean #handmade #handmadecraft #handmadebag #machine #making #makingvideos #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 / Korean Leather Workshop", "https://www.youtube.com/watch?v=sslv-jLNb0Y", "sslv-jLNb0Y", 1105, false, "/downloads/FactoryTrip2022/2025-11-28 한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 ⧸ Korean Leather Workshop/한 장의 가죽이 이렇게 변한다고요? 손끝의 정성으로 가죽 서류가방 만드는 과정. 한국의 가죽 공방 ⧸ Korean Leather Workshop [sslv-jLNb0Y].mkv", false, 2, ~U[2025-11-28 07:50:01Z]] 08:35:25.363 [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" = ?) [2] 08:35:25.364 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-11-21 07:50:01Z], 2] 08:35:25.366 [debug] QUERY OK source="media_items" db=0.9ms idle=3.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 / A Full Look Inside Korea’s Packaging Manufacturing\n\n00:00 한국의 테이프 만드는 과정\n10:26 한국의 종이용기 만드는 과정\n23:35 한국의 비닐봉지 만드는 과정\n31:14 한국의 골판지 박스 자동으로 만드는 과정\n38:14 한국의 유리병 만드는 과정\n44:58 한국의 종이가방 만드는 과정\n55:27 한국의 금속 캔 만드는 과정\n1:04:16 한국의 라벨 만드는 과정\n1:18:32 한국의 로프 만드는 과정\n1:27:22 한국의 포장박스 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#포장 #패키지 #공장 #테이프 #종이컵 #종이용기 #비닐 #비닐봉지 #박스 #골판지박스 #종이박스 #포장박스 #유리용기 #유리병 #종이가방 #쇼핑백 #금속용기 #금속캔 #제관 #라벨 #스티커 #로프 #박스제작 #포장재 #기계 #전문가 #기술자 #장인 #제작 #packing #packaging #package #pack #packagingmachine #papercup #papercupmachine #paperpackaging #papercontainer #paperbag #paperbagmachine #paperbags #paperbagmakingmachine #paperbagmaking #plasticbag #plasticbagmakingmachine #plasticbags #rope #glassbottles #paperbox #cardboardpackaging #cardboardbox #label #labelmachine #labelmaking #metalpackaging #can #metalcan #steelcan #tincan #tincans #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 / Inside Korea’s Packaging Factories", "16a5b18d-3704-42bb-a036-c32d0c37f013", "https://www.youtube.com/watch?v=6heSlmklMxM", "6heSlmklMxM", false, 5794, false, 5, "/downloads/FactoryTrip2022/2025-11-21 포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 ⧸ Inside Korea’s Packaging Factories/포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 ⧸ Inside Korea’s Packaging Factories [6heSlmklMxM].mkv", false, false, 2, [], 98, ~U[2025-11-21 07:50:01Z], ~U[2025-12-24 08:35:25Z], ~U[2025-12-24 08:35:25Z], "포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 / A Full Look Inside Korea’s Packaging Manufacturing\n\n00:00 한국의 테이프 만드는 과정\n10:26 한국의 종이용기 만드는 과정\n23:35 한국의 비닐봉지 만드는 과정\n31:14 한국의 골판지 박스 자동으로 만드는 과정\n38:14 한국의 유리병 만드는 과정\n44:58 한국의 종이가방 만드는 과정\n55:27 한국의 금속 캔 만드는 과정\n1:04:16 한국의 라벨 만드는 과정\n1:18:32 한국의 로프 만드는 과정\n1:27:22 한국의 포장박스 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#포장 #패키지 #공장 #테이프 #종이컵 #종이용기 #비닐 #비닐봉지 #박스 #골판지박스 #종이박스 #포장박스 #유리용기 #유리병 #종이가방 #쇼핑백 #금속용기 #금속캔 #제관 #라벨 #스티커 #로프 #박스제작 #포장재 #기계 #전문가 #기술자 #장인 #제작 #packing #packaging #package #pack #packagingmachine #papercup #papercupmachine #paperpackaging #papercontainer #paperbag #paperbagmachine #paperbags #paperbagmakingmachine #paperbagmaking #plasticbag #plasticbagmakingmachine #plasticbags #rope #glassbottles #paperbox #cardboardpackaging #cardboardbox #label #labelmachine #labelmaking #metalpackaging #can #metalcan #steelcan #tincan #tincans #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 / Inside Korea’s Packaging Factories", "https://www.youtube.com/watch?v=6heSlmklMxM", "6heSlmklMxM", 5794, false, "/downloads/FactoryTrip2022/2025-11-21 포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 ⧸ Inside Korea’s Packaging Factories/포장 하나에 담긴 수십 가지 기술! 일상 속 포장재 만드는 과정. K-패키지 공장 몰아보기 ⧸ Inside Korea’s Packaging Factories [6heSlmklMxM].mkv", false, 2, ~U[2025-11-21 07:50:01Z]] 08:35:25.366 [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" = ?) [2] 08:35:25.367 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-11-14 07:50:00Z], 2] 08:35:25.368 [debug] QUERY OK source="media_items" db=0.7ms idle=3.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#낚시 #낚시바늘 #공장 #낚시용품 #피싱 #코리아후크 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #fishing #fishingequipment #hook #fishinghooks #fishinghook #hookfishing #hook_fishing #hooker #heattreatment #hookmaking #koreahook #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 / Korean Fishing Hook Factory", "60e544e2-bdcd-4a85-b778-2bc9d3e4bbb6", "https://www.youtube.com/watch?v=69UGVR66ngs", "69UGVR66ngs", false, 686, false, 6, "/downloads/FactoryTrip2022/2025-11-14 작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 ⧸ Korean Fishing Hook Factory/작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 ⧸ Korean Fishing Hook Factory [69UGVR66ngs].mkv", false, false, 2, [], 98, ~U[2025-11-14 07:50:00Z], ~U[2025-12-24 08:35:25Z], ~U[2025-12-24 08:35:25Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#낚시 #낚시바늘 #공장 #낚시용품 #피싱 #코리아후크 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #fishing #fishingequipment #hook #fishinghooks #fishinghook #hookfishing #hook_fishing #hooker #heattreatment #hookmaking #koreahook #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 / Korean Fishing Hook Factory", "https://www.youtube.com/watch?v=69UGVR66ngs", "69UGVR66ngs", 686, false, "/downloads/FactoryTrip2022/2025-11-14 작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 ⧸ Korean Fishing Hook Factory/작지만 완벽한 기술! 튼튼한 낚시바늘 만드는 과정. 한국의 낚시바늘 공장 ⧸ Korean Fishing Hook Factory [69UGVR66ngs].mkv", false, 2, ~U[2025-11-14 07:50:00Z]] 08:35:25.369 [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" = ?) [2] 08:35:25.370 [debug] QUERY OK source="media_items" db=0.6ms 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[2025-11-07 08:00:49Z], 2] 08:35:25.374 [debug] QUERY OK source="media_items" db=4.0ms idle=3.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#밸브 #주물 #공장 #이형관 #맨홀뚜껑 #상하수도 #주철 #주조 #수도용 #산업용 #세계주철 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #valve #valvefactory #watervalve #gatevalve #gatevalves #casting #cast #iron #castiron #valvemanufacturer #valvemaking #fitting #segye #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 / Korean Valve Factory", "b06935b3-7ea5-4678-b176-fd43c0c0269b", "https://www.youtube.com/watch?v=YM3ToKKMIZs", "YM3ToKKMIZs", false, 691, false, 7, "/downloads/FactoryTrip2022/2025-11-07 누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 ⧸ Korean Valve Factory/누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 ⧸ Korean Valve Factory [YM3ToKKMIZs].mkv", false, false, 2, [], 98, ~U[2025-11-07 08:00:49Z], ~U[2025-12-24 08:35:25Z], ~U[2025-12-24 08:35:25Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#밸브 #주물 #공장 #이형관 #맨홀뚜껑 #상하수도 #주철 #주조 #수도용 #산업용 #세계주철 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #valve #valvefactory #watervalve #gatevalve #gatevalves #casting #cast #iron #castiron #valvemanufacturer #valvemaking #fitting #segye #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 / Korean Valve Factory", "https://www.youtube.com/watch?v=YM3ToKKMIZs", "YM3ToKKMIZs", 691, false, "/downloads/FactoryTrip2022/2025-11-07 누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 ⧸ Korean Valve Factory/누수는 없다! 도시의 물줄기를 만드는 제수밸브 대량생산 과정. 한국의 밸브 공장 ⧸ Korean Valve Factory [YM3ToKKMIZs].mkv", false, 2, ~U[2025-11-07 08:00:49Z]] 08:35:25.375 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [2] 08:35:25.375 [debug] QUERY OK source="media_items" db=0.5ms idle=6.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-31 07:50:01Z], 2] 08:35:25.377 [debug] QUERY OK source="media_items" db=0.8ms idle=6.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#뚝배기 #주방용품 #공장 #업소용 #내열도자기 #도기 #세라믹 #솥 #냄비 #경산세라믹 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #ttukbaegi #cookware #cookwares #kitchenware #kitchenwares #ceramicware #pot #claypot #claypotmaking #potmaking #ceramicpots #ceramicpot #ceramicfactory #earthenware #dishware #porcelain #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 / Korean Clay Pot Factory", "71622721-fc67-4369-b542-7aeaaaeddb33", "https://www.youtube.com/watch?v=DMIGlU5DaZI", "DMIGlU5DaZI", false, 660, false, 8, "/downloads/FactoryTrip2022/2025-10-31 한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 ⧸ Korean Clay Pot Factory/한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 ⧸ Korean Clay Pot Factory [DMIGlU5DaZI].mkv", false, false, 2, [], 98, ~U[2025-10-31 07:50:01Z], ~U[2025-12-24 08:35:25Z], ~U[2025-12-24 08:35:25Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#뚝배기 #주방용품 #공장 #업소용 #내열도자기 #도기 #세라믹 #솥 #냄비 #경산세라믹 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #ttukbaegi #cookware #cookwares #kitchenware #kitchenwares #ceramicware #pot #claypot #claypotmaking #potmaking #ceramicpots #ceramicpot #ceramicfactory #earthenware #dishware #porcelain #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 / Korean Clay Pot Factory", "https://www.youtube.com/watch?v=DMIGlU5DaZI", "DMIGlU5DaZI", 660, false, "/downloads/FactoryTrip2022/2025-10-31 한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 ⧸ Korean Clay Pot Factory/한 덩이 흙이 그릇이 되기까지, 한식의 온기를 담는 업소용 뚝배기 대량생산 과정. 한국의 뚝배기 공장 ⧸ Korean Clay Pot Factory [DMIGlU5DaZI].mkv", false, 2, ~U[2025-10-31 07:50:01Z]] 08:35:25.377 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:35:25.378 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-10-23 08:00:27Z], 2] 08:35:25.379 [debug] QUERY OK source="media_items" db=1.0ms idle=3.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["한 땀 한 땀, 세월이 만든 예술! 오직 손끝으로 완성된 세월의 작품. 한국 장인들의 전통 공예 몰아보기 / Korean Traditional Craft Binge Watch\n\n00:00 한국의 은주전자 만드는 과정\n23:39 한국의 전통 탈 만드는 과정\n39:23 한국의 범종 만드는 과정\n58:06 한국의 악기 소금 만드는 과정\n1:12:37 한국의 은장도 만드는 과정\n1:30:06 한국의 항아리 만드는 과정\n1:47:20 한국의 유기 그릇 만드는 과정\n1:55:40 한국의 화각공예품 만드는 과정\n2:04:11 한국의 한복 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#전통 #수작업 #장인 #공예 #공예품 #은주전자 #탈 #범종 #악기 #관악기 #소금 #은장도 #토기 #항아리 #유기 #놋그릇 #식기 #화각공예 #한복 #한복 #생산 #과정 #제작 #나무 #목공 #목공예 #수제 #핸드메이드 #기계 #전문가 #기술자 #제작 #silverkettle #silvercrafts #silver #woodworking #wood #woodcraft #woodwork #woodcarving #wooden #woodscraft #woodart #woods #woodworkingart #woodproducts #woodworker #woodworkingvideo #traditional #traditionalmasks #mask #woodenmask #brassitems #bell #hangingbell #bellmaking #brassbell #greatbell #temple #templebells #templebell #buddhistbell #churchbells #largebell #instruments #sogeum #windinstrument #bambooflute #traditionalinstruments #brassware #eunjangdo #silverknife #knifemaking #knife #knifesmith #blacksmith #traditionalknife #earthenware #earthenpot #jar #oxhorn #horn #hanbok #koreanstyle #making #production #korean #craft #crafts #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #master #process #asmr", "한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 / Korean Traditional Craft Compilation", "31926e3d-18bb-4357-958b-20ee3f1c4ad6", "https://www.youtube.com/watch?v=EaHG0sIgmsM", "EaHG0sIgmsM", false, 8591, false, 9, "/downloads/FactoryTrip2022/2025-10-23 한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 ⧸ Korean Traditional Craft Compilation/한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 ⧸ Korean Traditional Craft Compilation [EaHG0sIgmsM].mkv", false, false, 2, [], 98, ~U[2025-10-23 08:00:27Z], ~U[2025-12-24 08:35:25Z], ~U[2025-12-24 08:35:25Z], "한 땀 한 땀, 세월이 만든 예술! 오직 손끝으로 완성된 세월의 작품. 한국 장인들의 전통 공예 몰아보기 / Korean Traditional Craft Binge Watch\n\n00:00 한국의 은주전자 만드는 과정\n23:39 한국의 전통 탈 만드는 과정\n39:23 한국의 범종 만드는 과정\n58:06 한국의 악기 소금 만드는 과정\n1:12:37 한국의 은장도 만드는 과정\n1:30:06 한국의 항아리 만드는 과정\n1:47:20 한국의 유기 그릇 만드는 과정\n1:55:40 한국의 화각공예품 만드는 과정\n2:04:11 한국의 한복 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#전통 #수작업 #장인 #공예 #공예품 #은주전자 #탈 #범종 #악기 #관악기 #소금 #은장도 #토기 #항아리 #유기 #놋그릇 #식기 #화각공예 #한복 #한복 #생산 #과정 #제작 #나무 #목공 #목공예 #수제 #핸드메이드 #기계 #전문가 #기술자 #제작 #silverkettle #silvercrafts #silver #woodworking #wood #woodcraft #woodwork #woodcarving #wooden #woodscraft #woodart #woods #woodworkingart #woodproducts #woodworker #woodworkingvideo #traditional #traditionalmasks #mask #woodenmask #brassitems #bell #hangingbell #bellmaking #brassbell #greatbell #temple #templebells #templebell #buddhistbell #churchbells #largebell #instruments #sogeum #windinstrument #bambooflute #traditionalinstruments #brassware #eunjangdo #silverknife #knifemaking #knife #knifesmith #blacksmith #traditionalknife #earthenware #earthenpot #jar #oxhorn #horn #hanbok #koreanstyle #making #production #korean #craft #crafts #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #master #process #asmr", "한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 / Korean Traditional Craft Compilation", "https://www.youtube.com/watch?v=EaHG0sIgmsM", "EaHG0sIgmsM", 8591, false, "/downloads/FactoryTrip2022/2025-10-23 한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 ⧸ Korean Traditional Craft Compilation/한 땀 한 땀, 세월이 만든 예술! 한국 장인들의 전통 공예 몰아보기 ⧸ Korean Traditional Craft Compilation [EaHG0sIgmsM].mkv", false, 2, ~U[2025-10-23 08:00:27Z]] 08:35:25.380 [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" = ?) [2] 08:35:25.381 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-10-17 07:55:01Z], 2] 08:35:25.382 [debug] QUERY OK source="media_items" db=0.8ms idle=3.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#테이프 #점착테이프 #공장 #패키지 #포장용테이프 #opp테이프 #박스테이프 #컬러테이프 #박스포장 #원준테이프 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #tape #tapes #packingtape #packagingtape #adhesivetapes #adhesivetape #tapemaking #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 / Korean Tape Factory", "46b06720-98ae-4386-b789-746e40707c25", "https://www.youtube.com/watch?v=sGppaFD-3-A", "sGppaFD-3-A", false, 647, false, 10, "/downloads/FactoryTrip2022/2025-10-17 붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 ⧸ Korean Tape Factory/붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 ⧸ Korean Tape Factory [sGppaFD-3-A].mkv", false, false, 2, [], 98, ~U[2025-10-17 07:55:01Z], ~U[2025-12-24 08:35:25Z], ~U[2025-12-24 08:35:25Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#테이프 #점착테이프 #공장 #패키지 #포장용테이프 #opp테이프 #박스테이프 #컬러테이프 #박스포장 #원준테이프 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #tape #tapes #packingtape #packagingtape #adhesivetapes #adhesivetape #tapemaking #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 / Korean Tape Factory", "https://www.youtube.com/watch?v=sGppaFD-3-A", "sGppaFD-3-A", 647, false, "/downloads/FactoryTrip2022/2025-10-17 붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 ⧸ Korean Tape Factory/붙이고 버리지만, 만드는 건 예술입니다! 포장용 테이프 대량으로 만드는 과정. 한국의 테이프 공장 ⧸ Korean Tape Factory [sGppaFD-3-A].mkv", false, 2, ~U[2025-10-17 07:55:01Z]] 08:35:25.383 [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" = ?) [2] 08:35:25.383 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-10-10 08:01:12Z], 2] 08:35:25.385 [debug] QUERY OK source="media_items" db=0.9ms idle=3.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#해금 #악기 #전통 #가야금 #현악기 #악기장 #전통악기 #국악기 #류충선국악기연구원 #거문고 #관악기 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #haegeum #geomungo #gayageum #traditionalinstruments #traditional #stringinstrument #stringinstruments #koreanmusicalinstrument #korean #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 / Korean traditional instrument workshop", "ee9536df-c537-4518-ae10-d524961a0a4d", "https://www.youtube.com/watch?v=vkBpmu_JJz4", "vkBpmu_JJz4", false, 986, false, 11, "/downloads/FactoryTrip2022/2025-10-10 단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop/단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop [vkBpmu_JJz4].mkv", false, false, 2, [], 98, ~U[2025-10-10 08:01:12Z], ~U[2025-12-24 08:35:25Z], ~U[2025-12-24 08:35:25Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#해금 #악기 #전통 #가야금 #현악기 #악기장 #전통악기 #국악기 #류충선국악기연구원 #거문고 #관악기 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #haegeum #geomungo #gayageum #traditionalinstruments #traditional #stringinstrument #stringinstruments #koreanmusicalinstrument #korean #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 / Korean traditional instrument workshop", "https://www.youtube.com/watch?v=vkBpmu_JJz4", "vkBpmu_JJz4", 986, false, "/downloads/FactoryTrip2022/2025-10-10 단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop/단 두 줄로 천년의 소리를 낸다고요? 전통 현악기 해금 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop [vkBpmu_JJz4].mkv", false, 2, ~U[2025-10-10 08:01:12Z]] 08:35:25.385 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [2] 08:35:25.386 [debug] QUERY OK source="media_items" db=0.6ms 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[2025-10-03 08:01:11Z], 2] 08:35:25.387 [debug] QUERY OK source="media_items" db=0.8ms idle=3.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#종이컵 #종이용기 #공장 #패키지 #음료컵 #팝콘컵 #종이그릇 #종이접시 #종이트레이 #종이도시락 #포장용기 #일회용 #일회용품 #아주 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #papercup #paperpackaging #papercupmachines #papercupmakingbusiness #papercupmachinery #papercupmachine #paperpackagingbusiness #papercupmaking #papercontainer #paperbox #papertray #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 / Korean paper packaging factory", "56729330-4848-42e8-bf4f-2825c273f235", "https://www.youtube.com/watch?v=xWuxdcnyrFE", "xWuxdcnyrFE", false, 815, false, 12, "/downloads/FactoryTrip2022/2025-10-03 하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 ⧸ Korean paper packaging factory/하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 ⧸ Korean paper packaging factory [xWuxdcnyrFE].mkv", false, false, 2, [], 98, ~U[2025-10-03 08:01:11Z], ~U[2025-12-24 08:35:25Z], ~U[2025-12-24 08:35:25Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n\n#종이컵 #종이용기 #공장 #패키지 #음료컵 #팝콘컵 #종이그릇 #종이접시 #종이트레이 #종이도시락 #포장용기 #일회용 #일회용품 #아주 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #papercup #paperpackaging #papercupmachines #papercupmakingbusiness #papercupmachinery #papercupmachine #paperpackagingbusiness #papercupmaking #papercontainer #paperbox #papertray #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 / Korean paper packaging factory", "https://www.youtube.com/watch?v=xWuxdcnyrFE", "xWuxdcnyrFE", 815, false, "/downloads/FactoryTrip2022/2025-10-03 하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 ⧸ Korean paper packaging factory/하루 최대 200만 개! 우리가 매일 쓰는 종이컵 만드는 과정. 한국의 종이 포장용기 공장 ⧸ Korean paper packaging factory [xWuxdcnyrFE].mkv", false, 2, ~U[2025-10-03 08:01:11Z]] 08:35:25.388 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [2] 08:35:25.388 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-09-26 07:55:00Z], 2] 08:35:25.390 [debug] QUERY OK source="media_items" db=0.9ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#거문고 #가야금 #현악기 #전통 #악기장 #전통악기 #국악기 #진향국악기연구원 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #geomungo #gayageum #traditionalinstruments #traditional #stringinstrument #stringinstruments #koreanmusicalinstrument #korean #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 / Korean traditional instrument workshop", "453ddab3-6dde-4746-80ab-2d4dff1be9af", "https://www.youtube.com/watch?v=NS2zceeIa-A", "NS2zceeIa-A", false, 1359, false, 13, "/downloads/FactoryTrip2022/2025-09-26 나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop/나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop [NS2zceeIa-A].mkv", false, false, 2, [], 98, ~U[2025-09-26 07:55:00Z], ~U[2025-12-24 08:35:25Z], ~U[2025-12-24 08:35:25Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#거문고 #가야금 #현악기 #전통 #악기장 #전통악기 #국악기 #진향국악기연구원 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #geomungo #gayageum #traditionalinstruments #traditional #stringinstrument #stringinstruments #koreanmusicalinstrument #korean #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 / Korean traditional instrument workshop", "https://www.youtube.com/watch?v=NS2zceeIa-A", "NS2zceeIa-A", 1359, false, "/downloads/FactoryTrip2022/2025-09-26 나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop/나무가 선율로 태어난다! 천년의 소리를 품은 거문고 만드는 과정. 한국의 국악기 공방 ⧸ Korean traditional instrument workshop [NS2zceeIa-A].mkv", false, 2, ~U[2025-09-26 07:55:00Z]] 08:35:25.390 [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" = ?) [2] 08:35:25.391 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-09-19 07:51:01Z], 2] 08:35:25.393 [debug] QUERY OK source="media_items" db=1.0ms idle=3.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 / Korean Wood Craft Binge Watch\n\n00:00 한국의 목탁 만드는 과정\n15:36 한국의 레진 테이블 만드는 과정\n41:56 한국의 당구 큐 만드는 과정\n55:47 한국의 업소용 소파 만드는 과정\n1:07:03 한국의 야구배트 만드는 과정\n1:13:10 한국의 독서대 만드는 과정\n1:24:13 한국의 소반 만드는 과정\n1:45:49 한국의 단소 만드는 과정\n1:58:24 한국의 특수목 거울 만드는 과정\n2:15:13 한국의 엔드그레인 도마 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#나무 #목공 #목공방 #목공예 #목공기계 #목탁 #레진 #레진공예 #레진아트 #레진테이블 #특수목 #당구큐 #소파 #수제 #야구 #야구배트 #독서대 #소반 #테이블 #반상 #나무테이블 #단소 #거울 #인테리어 #인테리어소품 #도마 #엔드그레인도마 #나무도마 #기계 #전문가 #기술자 #장인 #제작 #woodworking #wood #woodcraft #woodwork #woodcarving #wooden #woodscraft #woodart #woods #woodworkingart #woodproducts #woodworker #woodworkingtools #woodworkingtips #woodworkingvideo #moktak #woodblock #woodenbell #resinart #resin #resincrafts #resintable #billiardcue #billiards #sofa #couch #baseballbats #baseballbat #readingdesk #readingtable #bookholder #lectern #soban #woodtable #diningtable #instruments #danso #bambooflute #traditionalinstruments #interiordesign #mirror #endgrain #endgraincuttingboard #cuttingboards #cuttingboard #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 / Ultimate Korean Woodcraft Compilation", "4010d98b-dcbb-43c3-ba5a-91bccb97e045", "https://www.youtube.com/watch?v=xoSdXqD1B74", "xoSdXqD1B74", false, 9091, false, 14, "/downloads/FactoryTrip2022/2025-09-19 죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 ⧸ Ultimate Korean Woodcraft Compilation/죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 ⧸ Ultimate Korean Woodcraft Compilation [xoSdXqD1B74].mkv", false, false, 2, [], 98, ~U[2025-09-19 07:51:01Z], ~U[2025-12-24 08:35:25Z], ~U[2025-12-24 08:35:25Z], "죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 / Korean Wood Craft Binge Watch\n\n00:00 한국의 목탁 만드는 과정\n15:36 한국의 레진 테이블 만드는 과정\n41:56 한국의 당구 큐 만드는 과정\n55:47 한국의 업소용 소파 만드는 과정\n1:07:03 한국의 야구배트 만드는 과정\n1:13:10 한국의 독서대 만드는 과정\n1:24:13 한국의 소반 만드는 과정\n1:45:49 한국의 단소 만드는 과정\n1:58:24 한국의 특수목 거울 만드는 과정\n2:15:13 한국의 엔드그레인 도마 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#나무 #목공 #목공방 #목공예 #목공기계 #목탁 #레진 #레진공예 #레진아트 #레진테이블 #특수목 #당구큐 #소파 #수제 #야구 #야구배트 #독서대 #소반 #테이블 #반상 #나무테이블 #단소 #거울 #인테리어 #인테리어소품 #도마 #엔드그레인도마 #나무도마 #기계 #전문가 #기술자 #장인 #제작 #woodworking #wood #woodcraft #woodwork #woodcarving #wooden #woodscraft #woodart #woods #woodworkingart #woodproducts #woodworker #woodworkingtools #woodworkingtips #woodworkingvideo #moktak #woodblock #woodenbell #resinart #resin #resincrafts #resintable #billiardcue #billiards #sofa #couch #baseballbats #baseballbat #readingdesk #readingtable #bookholder #lectern #soban #woodtable #diningtable #instruments #danso #bambooflute #traditionalinstruments #interiordesign #mirror #endgrain #endgraincuttingboard #cuttingboards #cuttingboard #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 / Ultimate Korean Woodcraft Compilation", "https://www.youtube.com/watch?v=xoSdXqD1B74", "xoSdXqD1B74", 9091, false, "/downloads/FactoryTrip2022/2025-09-19 죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 ⧸ Ultimate Korean Woodcraft Compilation/죽은 나무가 살아난다! 세상에 단 하나뿐인 목공예 작품들. 한국 목공예 몰아보기 ⧸ Ultimate Korean Woodcraft Compilation [xoSdXqD1B74].mkv", false, 2, ~U[2025-09-19 07:51:01Z]] 08:35:25.393 [debug] QUERY OK source="sources" db=0.2ms queue=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" = ?) [2] 08:35:25.394 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-09-12 08:01:04Z], 2] 08:35:25.395 [debug] QUERY OK source="media_items" db=0.7ms idle=3.7ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n#쇼핑백 #종이가방 #공장 #종이백 #종이포대 #신풍쇼핑백 #재단 #인쇄 #코팅 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #paper #bag #paperbag #paperbags #paperbagmakingmachine #paperbagmaking #shoppingbag #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 / Korean paperbag factory", "2ba785eb-2619-4ce8-9e30-82ea13b553b2", "https://www.youtube.com/watch?v=q7bETTLIyn4", "q7bETTLIyn4", false, 653, false, 15, "/downloads/FactoryTrip2022/2025-09-12 수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 ⧸ Korean paperbag factory/수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 ⧸ Korean paperbag factory [q7bETTLIyn4].mkv", false, false, 2, [], 98, ~U[2025-09-12 08:01:04Z], ~U[2025-12-24 08:35:25Z], ~U[2025-12-24 08:35:25Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDnQ33ve0NCGhkgGTn8EQC-\n\n#쇼핑백 #종이가방 #공장 #종이백 #종이포대 #신풍쇼핑백 #재단 #인쇄 #코팅 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #paper #bag #paperbag #paperbags #paperbagmakingmachine #paperbagmaking #shoppingbag #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 / Korean paperbag factory", "https://www.youtube.com/watch?v=q7bETTLIyn4", "q7bETTLIyn4", 653, false, "/downloads/FactoryTrip2022/2025-09-12 수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 ⧸ Korean paperbag factory/수천 개의 종이가방이 쏟아진다! 쇼핑백이 쉴 새 없이 대량으로 생산되는 과정. 한국의 쇼핑백 공장 ⧸ Korean paperbag factory [q7bETTLIyn4].mkv", false, 2, ~U[2025-09-12 08:01:04Z]] 08:35:25.396 [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" = ?) [2] 08:35:25.396 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-09-05 08:00:31Z], 2] 08:35:25.398 [debug] QUERY OK source="media_items" db=0.7ms idle=3.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n\n#목공 #테이블 #특수목 #목재 #레진 #레진공예 #레진테이블 #우드 #우드슬랩 #식탁 #리폼 #고급 #페스툴 #단하나의나무 #장인 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #wood #woodworking #woodwork #woodworkingart #woodart #woodcraft #woodworker #woodworkingvideo #resin #resinart #resincrafts #resintable #woodtable #exoticwood #reform #restoration #restoredfurniture #festool #making #makingvideos #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 / Korean woodworking craftsman", "74800260-bfc9-4933-9fef-a8afe00fcd45", "https://www.youtube.com/watch?v=HoVtRQ62b40", "HoVtRQ62b40", false, 1574, false, 16, "/downloads/FactoryTrip2022/2025-09-05 죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 ⧸ Korean woodworking craftsman/죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 ⧸ Korean woodworking craftsman [HoVtRQ62b40].mkv", false, false, 2, [], 98, ~U[2025-09-05 08:00:31Z], ~U[2025-12-24 08:35:25Z], ~U[2025-12-24 08:35:25Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n\n#목공 #테이블 #특수목 #목재 #레진 #레진공예 #레진테이블 #우드 #우드슬랩 #식탁 #리폼 #고급 #페스툴 #단하나의나무 #장인 #전문가 #기술자 #제조 #과정 #생산 #제작 #메이킹 #wood #woodworking #woodwork #woodworkingart #woodart #woodcraft #woodworker #woodworkingvideo #resin #resinart #resincrafts #resintable #woodtable #exoticwood #reform #restoration #restoredfurniture #festool #making #makingvideos #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 / Korean woodworking craftsman", "https://www.youtube.com/watch?v=HoVtRQ62b40", "HoVtRQ62b40", 1574, false, "/downloads/FactoryTrip2022/2025-09-05 죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 ⧸ Korean woodworking craftsman/죽어있던 테이블, 장인의 손끝에서 세상 단 하나뿐인 레진테이블로 변신하다! 한국의 목공 장인 ⧸ Korean woodworking craftsman [HoVtRQ62b40].mkv", false, 2, ~U[2025-09-05 08:00:31Z]] 08:35:25.398 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 08:35:25.399 [debug] QUERY OK source="media_items" db=0.6ms 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[2025-08-29 08:00:06Z], 2] 08:35:25.400 [debug] QUERY OK source="media_items" db=0.7ms idle=3.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 / Korean Leather Craft Binge Watch\n\n00:00 한국의 야구글러브 만드는 과정\n19:55 한국의 명품가방 리폼 과정\n53:31 한국의 소파 만드는 과정\n1:08:11 한국의 수제화 만드는 과정\n1:26:19 한국의 다이어리 만드는 과정\n1:41:24 한국의 북 만드는 과정\n1:58:24 한국의 카드지갑 만드는 과정\n2:10:40 한국의 등산화 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#가죽 #가죽공예 #가죽공방 #야구글러브 #가죽가방 #명품 #명품가방 #명품가방수선 #명품가방리폼 #리폼 #수선 #소파 #가죽소파 #수제화 #신발 #가죽신발 #다이어리 #북 #악기 #카드지갑 #지갑 #등산화 #공정 #과정 #기계 #전문가 #기술자 #장인 #제작 #leather #leathercraft #leatherworking #leatherworker #leathershoes #leatherbag #leatherproducts #leathercompany #baseballglove #baseballgloves #restoration #reform #sofa #couch #leathershoes #shoemaker #shoemaking #diary #planner #instruments #drums #koreandrum #traditionalinstruments #wallet #leatherwallets #leatherwallet #cardwallet #leathercardholder #hikingshoes #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 / Korean Leather Craft Compilation", "a85c0230-a0c1-4590-9330-3f01c3b20a5d", "https://www.youtube.com/watch?v=4SC6qyqBmM4", "4SC6qyqBmM4", false, 9463, false, 17, "/downloads/FactoryTrip2022/2025-08-29 가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 ⧸ Korean Leather Craft Compilation/가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 ⧸ Korean Leather Craft Compilation [4SC6qyqBmM4].mkv", false, false, 2, [], 98, ~U[2025-08-29 08:00:06Z], ~U[2025-12-24 08:35:25Z], ~U[2025-12-24 08:35:25Z], "가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 / Korean Leather Craft Binge Watch\n\n00:00 한국의 야구글러브 만드는 과정\n19:55 한국의 명품가방 리폼 과정\n53:31 한국의 소파 만드는 과정\n1:08:11 한국의 수제화 만드는 과정\n1:26:19 한국의 다이어리 만드는 과정\n1:41:24 한국의 북 만드는 과정\n1:58:24 한국의 카드지갑 만드는 과정\n2:10:40 한국의 등산화 만드는 과정\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n\n#가죽 #가죽공예 #가죽공방 #야구글러브 #가죽가방 #명품 #명품가방 #명품가방수선 #명품가방리폼 #리폼 #수선 #소파 #가죽소파 #수제화 #신발 #가죽신발 #다이어리 #북 #악기 #카드지갑 #지갑 #등산화 #공정 #과정 #기계 #전문가 #기술자 #장인 #제작 #leather #leathercraft #leatherworking #leatherworker #leathershoes #leatherbag #leatherproducts #leathercompany #baseballglove #baseballgloves #restoration #reform #sofa #couch #leathershoes #shoemaker #shoemaking #diary #planner #instruments #drums #koreandrum #traditionalinstruments #wallet #leatherwallets #leatherwallet #cardwallet #leathercardholder #hikingshoes #koreanstyle #factory #making #production #korean #koreanfactory #craftsmanship #artisan #handmade #processvideo #workshop #makingvideos #automatic #master #process #asmr", "가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 / Korean Leather Craft Compilation", "https://www.youtube.com/watch?v=4SC6qyqBmM4", "4SC6qyqBmM4", 9463, false, "/downloads/FactoryTrip2022/2025-08-29 가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 ⧸ Korean Leather Craft Compilation/가죽 한 장의 기적! 일상 속 특별한 가죽 제품들 만드는 과정. 한국의 가죽 공예 몰아보기 ⧸ Korean Leather Craft Compilation [4SC6qyqBmM4].mkv", false, 2, ~U[2025-08-29 08:00:06Z]] 08:35:25.400 [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" = ?) [2] 08:35:25.401 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-08-22 08:00:03Z], 2] 08:35:25.402 [debug] QUERY OK source="media_items" db=0.9ms idle=3.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#서예 #붓 #필방 #서예용품 #캘리그라피 #세필붓 #채색붓 #서예붓 #천연모붓 #족제비모붓 #수제붓 #정호당필방 #전문가 #기술자 #장인 #필장 #공방 #공장 #제조 #과정 #생산 #제작 #메이킹 #brush #writingbrush #calligraphybrush #paintingbrushes #paintingbrush #calligraphy #brushmarkers #handmade #handmadebrush #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 / Korean Brush Workshop", "c1746201-770d-47f0-9c35-88afca39cba7", "https://www.youtube.com/watch?v=2HiSKOQtlXg", "2HiSKOQtlXg", false, 957, false, 18, "/downloads/FactoryTrip2022/2025-08-22 족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 ⧸ Korean Brush Workshop/족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 ⧸ Korean Brush Workshop [2HiSKOQtlXg].mkv", false, false, 2, [], 98, ~U[2025-08-22 08:00:03Z], ~U[2025-12-24 08:35:25Z], ~U[2025-12-24 08:35:25Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#서예 #붓 #필방 #서예용품 #캘리그라피 #세필붓 #채색붓 #서예붓 #천연모붓 #족제비모붓 #수제붓 #정호당필방 #전문가 #기술자 #장인 #필장 #공방 #공장 #제조 #과정 #생산 #제작 #메이킹 #brush #writingbrush #calligraphybrush #paintingbrushes #paintingbrush #calligraphy #brushmarkers #handmade #handmadebrush #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 / Korean Brush Workshop", "https://www.youtube.com/watch?v=2HiSKOQtlXg", "2HiSKOQtlXg", 957, false, "/downloads/FactoryTrip2022/2025-08-22 족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 ⧸ Korean Brush Workshop/족제비털로 붓을 만든다고? 반세기 장인의 기술로 태어난 수제 붓. 한국의 필방 ⧸ Korean Brush Workshop [2HiSKOQtlXg].mkv", false, 2, ~U[2025-08-22 08:00:03Z]] 08:35:25.403 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [2] 08:35:25.404 [debug] QUERY OK source="media_items" db=0.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[2025-08-15 08:00:55Z], 2] 08:35:25.405 [debug] QUERY OK source="media_items" db=0.8ms idle=3.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVBc3WC_WNuI7xqcHKXrTbk4\n\n#김밥 #식품 #공장 #냉동김밥 #식품공장 #야채김밥 #풀드포크김밥 #불고기김밥 #제육김밥 #참치김밥 #진미채김밥 #이노하스 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #kfood #kimbap #gimbap #food #foodfactory #bulgogikimbap #vegetablekimbap #pulledporkkimbap #tunamayokimbap #kimchikimbap #innohas #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 / Korean food factory", "bd488972-fc5d-4313-a6e9-09dc15fa39bc", "https://www.youtube.com/watch?v=go-BKd4XWhs", "go-BKd4XWhs", false, 625, false, 19, "/downloads/FactoryTrip2022/2025-08-15 케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 ⧸ Korean food factory/케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 ⧸ Korean food factory [go-BKd4XWhs].mkv", false, false, 2, [], 98, ~U[2025-08-15 08:00:55Z], ~U[2025-12-24 08:35:25Z], ~U[2025-12-24 08:35:25Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVBc3WC_WNuI7xqcHKXrTbk4\n\n#김밥 #식품 #공장 #냉동김밥 #식품공장 #야채김밥 #풀드포크김밥 #불고기김밥 #제육김밥 #참치김밥 #진미채김밥 #이노하스 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #kfood #kimbap #gimbap #food #foodfactory #bulgogikimbap #vegetablekimbap #pulledporkkimbap #tunamayokimbap #kimchikimbap #innohas #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 / Korean food factory", "https://www.youtube.com/watch?v=go-BKd4XWhs", "go-BKd4XWhs", 625, false, "/downloads/FactoryTrip2022/2025-08-15 케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 ⧸ Korean food factory/케데헌 김밥 이렇게 만들어집니다! 전 세계가 반한 K-김밥을 대량으로 만드는 과정. 한국의 냉동김밥 공장 ⧸ Korean food factory [go-BKd4XWhs].mkv", false, 2, ~U[2025-08-15 08:00:55Z]] 08:35:25.406 [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" = ?) [2] 08:35:25.406 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-08-08 08:00:18Z], 2] 08:35:25.408 [debug] QUERY OK source="media_items" db=0.8ms idle=3.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#맷돌 #현무암 #공장 #석재 #커피맷돌 #전통맷돌 #철원 #부흥석재 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #millstone #stone #handmill #grindmill #stonecrafts #stonecraft #stoneart #stoneartist #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "이게 바위였다고요? 거대한 현무암으로 맷돌 만드는 과정. 한국의 석재 공장 / Korean stone factory", "79f9bbc4-efef-4aa2-ab2a-42c9b934d8fc", "https://www.youtube.com/watch?v=E5eEI-ejfzc", "E5eEI-ejfzc", false, 996, false, 20, "/downloads/FactoryTrip2022/2025-08-08 이게 바위였다고요? 거대한 현무암으로 맷돌 만드는 과정. 한국의 석재 공장 ⧸ Korean stone factory/이게 바위였다고요? 거대한 현무암으로 맷돌 만드는 과정. 한국의 석재 공장 ⧸ Korean stone factory [E5eEI-ejfzc].mkv", false, false, 2, [], 98, ~U[2025-08-08 08:00:18Z], ~U[2025-12-24 08:35:25Z], ~U[2025-12-24 08:35:25Z], "😀 시청해주셔서 감사합니다!\n팩토리트립은 제품 제작, 변화하는 과정을 즐겁게 여행하는 채널입니다.\n\n💌 문의 : factorytrip.std@gmail.com\n-영상 제작에 도움을 주신 대표님과 관계자 여러분께 깊은 감사의 말씀을 전합니다.\n-무료 촬영을 진행하여 소상공인/중소기업 분들에게 힘이 되는 팩토리트립이 되겠습니다.\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n😀 Thanks for watching! \nFactoryTrip is a channel for enjoying the process of making and changing products.\n\n💌 FactoryTrip contact E-mail : factorytrip.std@gmail.com\n\n🎥 Copyright(C) 2025 FactoryTrip All rights reserved.\n\n\n▶️ Enjoy more!_https://www.youtube.com/playlist?list=PLtsjIJR4kcVDUQ2DOaUnC3z8bxOmcJYHa\n\n#맷돌 #현무암 #공장 #석재 #커피맷돌 #전통맷돌 #철원 #부흥석재 #전문가 #기술자 #장인 #제조 #과정 #생산 #제작 #메이킹 #millstone #stone #handmill #grindmill #stonecrafts #stonecraft #stoneart #stoneartist #machine #making #makingvideos #engineer #automatic #manufacturing #factory #master #workmanship #artisan #craftsman #craftsmanship #process #asmr", "이게 바위였다고요? 거대한 현무암으로 맷돌 만드는 과정. 한국의 석재 공장 / Korean stone factory", "https://www.youtube.com/watch?v=E5eEI-ejfzc", "E5eEI-ejfzc", 996, false, "/downloads/FactoryTrip2022/2025-08-08 이게 바위였다고요? 거대한 현무암으로 맷돌 만드는 과정. 한국의 석재 공장 ⧸ Korean stone factory/이게 바위였다고요? 거대한 현무암으로 맷돌 만드는 과정. 한국의 석재 공장 ⧸ Korean stone factory [E5eEI-ejfzc].mkv", false, 2, ~U[2025-08-08 08:00:18Z]] 08:35:25.408 [debug] QUERY OK source="sources" db=0.3ms idle=3.9ms UPDATE "sources" SET "last_indexed_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2025-12-24 08:35:25Z], ~U[2025-12-24 08:35:25Z], 2] 08:35:25.409 [debug] QUERY OK source="media_items" db=0.6ms 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 ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [2] 08:35:25.410 [debug] QUERY OK source="media_items" db=0.5ms idle=3.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")))) [2] 08:35:25.410 [debug] QUERY OK source="media_items" db=0.3ms idle=3.6ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [2] 08:35:25.412 [debug] QUERY OK source="tasks" db=0.3ms idle=2.6ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [7420, 2, ~U[2025-12-24 08:35:25Z], ~U[2025-12-24 08:35:25Z]] 08:35:25.413 [info] {"args":{"id":2},"id":7404,"meta":{},"state":"success","max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","duration":49633497,"event":"job:stop","queue_time":224041,"attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 08:35:51.778 [info] {"source":"oban","duration":1554,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:36:00.869 [info] {"source":"oban","duration":590,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:36:06.857 [info] HEAD / 08:36:06.857 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 08:36:06.857 [debug] QUERY OK source="settings" db=0.2ms idle=899.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:06.858 [debug] QUERY OK source="media_profiles" db=0.1ms idle=414.4ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 08:36:06.858 [debug] QUERY OK source="sources" db=0.1ms idle=414.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 08:36:06.869 [debug] QUERY OK source="media_items" db=10.3ms queue=0.1ms idle=414.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:36:06.871 [debug] QUERY OK source="media_items" db=2.2ms idle=425.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:36:06.872 [debug] QUERY OK source="settings" db=0.2ms 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 [] 08:36:06.872 [debug] QUERY OK source="settings" db=0.1ms idle=14.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:36:06.873 [debug] QUERY OK source="settings" db=0.1ms idle=14.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:36:06.874 [debug] QUERY OK source="tasks" db=0.2ms 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"] 08:36:06.875 [debug] QUERY OK source="media_items" db=0.7ms 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 (m0."media_filepath" IS NULL)) [] 08:36:06.876 [debug] QUERY OK source="media_items" db=0.4ms 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 INNER JOIN "sources" AS s1 ON s1."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] 08:36:06.877 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [3, 2, 7] 08:36:06.887 [debug] QUERY OK source="media_items" db=9.4ms 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"))) [] 08:36:06.888 [debug] QUERY OK source="media_items" db=0.6ms 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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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] 08:36:06.888 [debug] QUERY OK source="sources" db=0.1ms idle=12.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 08:36:06.890 [info] Sent 200 in 32ms 08:36:08.175 [info] GET / 08:36:08.175 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 08:36:08.176 [debug] QUERY OK source="settings" db=0.2ms idle=1288.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:08.176 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1287.9ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 08:36:08.176 [debug] QUERY OK source="sources" db=0.1ms idle=1287.7ms SELECT count(s0."id") FROM "sources" AS s0 [] 08:36:08.194 [debug] QUERY OK source="media_items" db=17.8ms idle=1215.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:36:08.198 [debug] QUERY OK source="media_items" db=3.3ms queue=0.1ms idle=232.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:36:08.199 [debug] QUERY OK source="settings" db=0.2ms 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 [] 08:36:08.199 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=22.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:36:08.200 [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 [] 08:36:08.201 [debug] QUERY OK source="tasks" db=0.2ms idle=6.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"] 08:36:08.202 [debug] QUERY OK source="media_items" db=0.7ms 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 (m0."media_filepath" IS NULL)) [] 08:36:08.202 [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] 08:36:08.203 [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 (?,?,?)) [3, 2, 7] 08:36:08.222 [debug] QUERY OK source="media_items" db=17.6ms idle=4.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 08:36:08.222 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=21.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] 08:36:08.223 [debug] QUERY OK source="sources" db=0.2ms idle=20.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 08:36:08.224 [info] Sent 200 in 48ms 08:36:08.375 [info] GET / 08:36:08.375 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 08:36:08.376 [debug] QUERY OK source="settings" db=0.1ms idle=172.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:08.376 [debug] QUERY OK source="media_profiles" db=0.0ms idle=172.7ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 08:36:08.376 [debug] QUERY OK source="sources" db=0.1ms idle=154.5ms SELECT count(s0."id") FROM "sources" AS s0 [] 08:36:08.378 [debug] QUERY OK source="media_items" db=1.9ms idle=153.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:36:08.379 [debug] QUERY OK source="media_items" db=0.8ms idle=155.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:36:08.380 [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 [] 08:36:08.380 [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 [] 08:36:08.381 [debug] QUERY OK source="settings" db=0.2ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:36:08.382 [debug] QUERY OK source="tasks" db=0.2ms 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"] 08:36:08.383 [debug] QUERY OK source="media_items" db=0.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 (m0."media_filepath" IS NULL)) [] 08:36:08.383 [debug] QUERY OK source="media_items" db=0.3ms 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] 08:36:08.384 [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" IN (?,?,?)) [3, 2, 7] 08:36:08.386 [debug] QUERY OK source="media_items" db=1.3ms idle=3.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 08:36:08.387 [debug] QUERY OK source="media_items" db=0.6ms 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] 08:36:08.387 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [4] 08:36:08.388 [info] Sent 200 in 13ms 08:36:08.937 [info] GET / 08:36:08.937 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 08:36:08.938 [debug] QUERY OK source="settings" db=0.2ms idle=554.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:08.938 [debug] QUERY OK source="media_profiles" db=0.1ms idle=553.8ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 08:36:08.938 [debug] QUERY OK source="sources" db=0.1ms idle=552.0ms SELECT count(s0."id") FROM "sources" AS s0 [] 08:36:08.940 [debug] QUERY OK source="media_items" db=1.8ms idle=551.5ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:36:08.941 [debug] QUERY OK source="media_items" db=0.8ms idle=552.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:36:08.942 [debug] QUERY OK source="settings" db=0.1ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:36:08.942 [debug] QUERY OK source="settings" db=0.2ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:36:08.943 [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 [] 08:36:08.943 [debug] QUERY OK source="tasks" db=0.3ms 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"] 08:36:08.945 [debug] QUERY OK source="media_items" db=0.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 (m0."media_filepath" IS NULL)) [] 08:36:08.945 [debug] QUERY OK source="media_items" db=0.3ms 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] 08:36:08.946 [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" IN (?,?,?)) [3, 2, 7] 08:36:08.948 [debug] QUERY OK source="media_items" db=1.3ms idle=3.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 08:36:08.948 [debug] QUERY OK source="media_items" db=0.4ms 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] 08:36:08.949 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 08:36:08.950 [info] Sent 200 in 12ms 08:36:09.935 [info] POST /graphql 08:36:09.936 [info] Sent 404 in 595µs 08:36:09.936 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:10.486 [info] POST /api 08:36:10.487 [info] Sent 404 in 291µs 08:36:10.487 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:11.027 [info] POST /api/graphql 08:36:11.027 [info] Sent 404 in 281µs 08:36:11.027 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:11.583 [info] POST /graphql/api 08:36:11.583 [info] Sent 404 in 370µs 08:36:11.583 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:12.127 [info] POST /api/gql 08:36:12.128 [info] Sent 404 in 305µs 08:36:12.128 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:13.715 [info] GET /swagger-ui.html 08:36:13.716 [debug] QUERY OK source="settings" db=0.1ms idle=1272.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:13.716 [debug] QUERY OK source="settings" db=0.1ms idle=1273.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:13.716 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:13.717 [error] #PID<0.214639.0> running PinchflatWeb.Endpoint (connection #PID<0.214638.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /swagger-ui.html ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /swagger-ui (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214638.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/swagger-ui.html", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55736}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214639.0>, params: %{}, path_info: ["swagger-ui"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "text/html,application/json"}, {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/swagger-ui.html", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ2QTSqXrCw8AAGnFC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214638.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/swagger-ui.html", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55736}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /swagger-ui (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214638.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/swagger-ui.html", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55736}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214639.0>, params: %{}, path_info: ["swagger-ui"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "text/html,application/json"}, {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/swagger-ui.html", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ2QTSqXrCw8AAGnFC"} ], scheme: :http, script_name: [], secret_k (truncated) 08:36:14.668 [info] GET /swagger/index.html 08:36:14.668 [debug] QUERY OK source="settings" db=0.3ms idle=952.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:14.669 [debug] QUERY OK source="settings" db=0.1ms idle=952.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:36:14.669 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:14.669 [error] #PID<0.214641.0> running PinchflatWeb.Endpoint (connection #PID<0.214640.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /swagger/index.html ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /swagger/index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214640.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/swagger/index.html", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55740}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214641.0>, params: %{}, path_info: ["swagger", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "text/html,application/json"}, {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/swagger/index.html", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ2T2Y8GgJBeIAGnGC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214640.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/swagger/index.html", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55740}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /swagger/index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214640.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/swagger/index.html", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55740}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214641.0>, params: %{}, path_info: ["swagger", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "text/html,application/json"}, {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/swagger/index.html", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ2T2Y8GgJBeIAGnGC"} ], scheme: :http, (truncated) 08:36:15.690 [info] GET /swagger/swagger-ui.html 08:36:15.691 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1247.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:15.691 [debug] QUERY OK source="settings" db=0.1ms idle=1248.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:15.692 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:15.692 [error] #PID<0.214643.0> running PinchflatWeb.Endpoint (connection #PID<0.214642.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /swagger/swagger-ui.html ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /swagger/swagger-ui (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214642.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/swagger/swagger-ui.html", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55744}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214643.0>, params: %{}, path_info: ["swagger", "swagger-ui"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "text/html,application/json"}, {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/swagger/swagger-ui.html", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ2XqOPYYPAagAK-_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.214642.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/swagger/swagger-ui.html", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55744}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /swagger/swagger-ui (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214642.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/swagger/swagger-ui.html", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55744}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214643.0>, params: %{}, path_info: ["swagger", "swagger-ui"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "text/html,application/json"}, {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/swagger/swagger-ui.html", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ2XqOPYYPAagAK-_B (truncated) 08:36:16.670 [info] GET /webjars/swagger-ui/index.html 08:36:16.671 [debug] QUERY OK source="settings" db=0.2ms idle=979.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:16.671 [debug] QUERY OK source="settings" db=0.2ms idle=979.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:16.671 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:16.672 [error] #PID<0.214645.0> running PinchflatWeb.Endpoint (connection #PID<0.214644.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /webjars/swagger-ui/index.html ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /webjars/swagger-ui/index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214644.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/webjars/swagger-ui/index.html", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55748}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214645.0>, params: %{}, path_info: ["webjars", "swagger-ui", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "text/html,application/json"}, {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/webjars/swagger-ui/index.html", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ2bTwjl4EhQ8AGnHC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214644.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/webjars/swagger-ui/index.html", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55748}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /webjars/swagger-ui/index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214644.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/webjars/swagger-ui/index.html", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55748}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214645.0>, params: %{}, path_info: ["webjars", "swagger-ui", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "text/html,application/json"}, {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/webjars/swagger-ui/index.html", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, mus (truncated) 08:36:16.717 [info] GET / 08:36:16.717 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 08:36:16.717 [debug] QUERY OK source="settings" db=0.1ms idle=739.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:16.718 [debug] QUERY OK source="media_profiles" db=0.0ms idle=274.5ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 08:36:16.718 [debug] QUERY OK source="sources" db=0.1ms idle=274.7ms SELECT count(s0."id") FROM "sources" AS s0 [] 08:36:16.720 [debug] QUERY OK source="media_items" db=1.6ms idle=47.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:36:16.721 [debug] QUERY OK source="media_items" db=0.8ms idle=48.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:36:16.721 [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 [] 08:36:16.721 [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 [] 08:36:16.722 [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 [] 08:36:16.723 [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"] 08:36:16.724 [debug] QUERY OK source="media_items" db=0.6ms 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 (m0."media_filepath" IS NULL)) [] 08:36:16.724 [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] 08:36:16.725 [debug] QUERY OK source="sources" db=0.3ms 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 (?,?,?)) [3, 2, 7] 08:36:16.727 [debug] QUERY OK source="media_items" db=1.4ms 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"))) [] 08:36:16.728 [debug] QUERY OK source="media_items" db=0.5ms 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] 08:36:16.729 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 08:36:16.730 [info] Sent 200 in 12ms 08:36:17.685 [info] GET /swagger.json 08:36:17.685 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=959.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:17.686 [debug] QUERY OK source="settings" db=0.1ms idle=957.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:17.686 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:17.686 [error] #PID<0.214653.0> running PinchflatWeb.Endpoint (connection #PID<0.214652.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /swagger.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 /swagger (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214652.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/swagger.json", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55764}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214653.0>, params: %{}, path_info: ["swagger"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "text/html,application/json"}, {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/swagger.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ2fFsA-KxLokAGnOC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214652.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/swagger.json", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55764}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /swagger (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214652.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/swagger.json", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55764}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214653.0>, params: %{}, path_info: ["swagger"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "text/html,application/json"}, {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/swagger.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ2fFsA-KxLokAGnOC"} ], scheme: :http, script_name: [], secret_key_base: :..., state (truncated) 08:36:18.669 [info] GET /swagger/v1/swagger.json 08:36:18.669 [debug] QUERY OK source="settings" db=0.2ms idle=983.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:18.670 [debug] QUERY OK source="settings" db=0.1ms idle=984.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:18.670 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:18.670 [error] #PID<0.214655.0> running PinchflatWeb.Endpoint (connection #PID<0.214654.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /swagger/v1/swagger.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 /swagger/v1/swagger (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214654.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/swagger/v1/swagger.json", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55772}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214655.0>, params: %{}, path_info: ["swagger", "v1", "swagger"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "text/html,application/json"}, {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/swagger/v1/swagger.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ2iwU-BbkpwkAGnPC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214654.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/swagger/v1/swagger.json", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55772}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /swagger/v1/swagger (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214654.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/swagger/v1/swagger.json", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55772}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214655.0>, params: %{}, path_info: ["swagger", "v1", "swagger"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "text/html,application/json"}, {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/swagger/v1/swagger.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ2iwU-Bbkpw (truncated) 08:36:19.777 [info] GET /v2/api-docs 08:36:19.777 [debug] QUERY OK source="settings" db=0.2ms idle=1333.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:19.777 [debug] QUERY OK source="settings" db=0.1ms idle=1334.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:19.778 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:19.778 [error] #PID<0.214657.0> running PinchflatWeb.Endpoint (connection #PID<0.214656.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /v2/api-docs ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /v2/api-docs (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214656.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/v2/api-docs", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55786}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214657.0>, params: %{}, path_info: ["v2", "api-docs"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "text/html,application/json"}, {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/v2/api-docs", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ2m4bw_5UBQYAGnQC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214656.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/v2/api-docs", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55786}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /v2/api-docs (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214656.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/v2/api-docs", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55786}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214657.0>, params: %{}, path_info: ["v2", "api-docs"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "text/html,application/json"}, {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/v2/api-docs", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ2m4bw_5UBQYAGnQC"} ], scheme: :http, script_name: [], secret_key_base: :..., (truncated) 08:36:20.815 [info] GET /v3/api-docs 08:36:20.815 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=1037.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:20.816 [debug] QUERY OK source="settings" db=0.1ms idle=1037.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:20.816 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:20.816 [error] #PID<0.214659.0> running PinchflatWeb.Endpoint (connection #PID<0.214658.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /v3/api-docs ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /v3/api-docs (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214658.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/v3/api-docs", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55796}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214659.0>, params: %{}, path_info: ["v3", "api-docs"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "text/html,application/json"}, {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/v3/api-docs", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ2qv7ASgK4fkAGnRC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214658.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/v3/api-docs", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55796}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /v3/api-docs (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214658.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/v3/api-docs", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55796}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214659.0>, params: %{}, path_info: ["v3", "api-docs"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "text/html,application/json"}, {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/v3/api-docs", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ2qv7ASgK4fkAGnRC"} ], scheme: :http, script_name: [], secret_key_base: :..., (truncated) 08:36:21.781 [info] {"source":"oban","duration":1024,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:36:21.832 [info] GET /api-docs/swagger.json 08:36:21.833 [debug] QUERY OK source="settings" db=0.2ms idle=1389.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:21.833 [debug] QUERY OK source="settings" db=0.2ms idle=1017.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:21.833 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:21.834 [error] #PID<0.214661.0> running PinchflatWeb.Endpoint (connection #PID<0.214660.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /api-docs/swagger.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 /api-docs/swagger (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214660.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/api-docs/swagger.json", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55804}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214661.0>, params: %{}, path_info: ["api-docs", "swagger"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "text/html,application/json"}, {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/api-docs/swagger.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ2uij8nY9mHoADQuD"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214660.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/api-docs/swagger.json", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55804}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /api-docs/swagger (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214660.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/api-docs/swagger.json", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55804}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214661.0>, params: %{}, path_info: ["api-docs", "swagger"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "text/html,application/json"}, {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/api-docs/swagger.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ2uij8nY9mHoADQuD"} ], (truncated) 08:36:22.839 [info] GET /api/swagger.json 08:36:22.840 [debug] QUERY OK source="settings" db=0.2ms idle=1058.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:22.840 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=1007.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:22.840 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:22.841 [error] #PID<0.214663.0> running PinchflatWeb.Endpoint (connection #PID<0.214662.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /api/swagger.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 /api/swagger (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214662.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/api/swagger.json", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55810}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214663.0>, params: %{}, path_info: ["api", "swagger"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "text/html,application/json"}, {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/api/swagger.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ2ySoD3l4xTYAGnSC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214662.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/api/swagger.json", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55810}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /api/swagger (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214662.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/api/swagger.json", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55810}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "text/html,application/json", "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214663.0>, params: %{}, path_info: ["api", "swagger"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "text/html,application/json"}, {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/api/swagger.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ2ySoD3l4xTYAGnSC"} ], scheme: :http, script_name: [], (truncated) 08:36:23.707 [info] GET /@vite/env 08:36:23.708 [debug] QUERY OK source="settings" db=0.2ms idle=1264.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:23.708 [debug] QUERY OK source="settings" db=0.1ms idle=868.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:23.708 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:23.709 [error] #PID<0.214665.0> running PinchflatWeb.Endpoint (connection #PID<0.214664.0>, stream id 1) terminated Server: pf.kjin.cloud: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.214664.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/@vite/env", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55814}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214665.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/@vite/env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ21hoqi37nmsAGnTC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214664.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/@vite/env", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55814}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, 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.214664.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/@vite/env", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55814}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214665.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/@vite/env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ21hoqi37nmsAGnTC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_ (truncated) 08:36:24.711 [info] GET /actuator/env 08:36:24.712 [debug] QUERY OK source="settings" db=0.2ms idle=1268.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:24.712 [debug] QUERY OK source="settings" db=0.1ms idle=1004.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:36:24.712 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:24.713 [error] #PID<0.214667.0> running PinchflatWeb.Endpoint (connection #PID<0.214666.0>, stream id 1) terminated Server: pf.kjin.cloud: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.214666.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/actuator/env", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55818}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214667.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/actuator/env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ25RAre9UAIQAGnUC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214666.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/actuator/env", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55818}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, 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.214666.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/actuator/env", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55818}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214667.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/actuator/env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ25RAre9UAIQAGnUC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, (truncated) 08:36:25.694 [info] GET /server 08:36:25.695 [debug] QUERY OK source="settings" db=0.2ms idle=1251.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:25.695 [debug] QUERY OK source="settings" db=0.0ms idle=982.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:25.695 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:25.696 [error] #PID<0.214669.0> running PinchflatWeb.Endpoint (connection #PID<0.214668.0>, stream id 1) terminated Server: pf.kjin.cloud: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.214668.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55828}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214669.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/server", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ287UErkgJcQAGnVC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214668.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55828}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, 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.214668.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55828}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214669.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/server", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ287UErkgJcQAGnVC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c" (truncated) 08:36:26.736 [info] GET /.vscode/sftp.json 08:36:26.737 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1293.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:26.738 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1042.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:26.738 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:26.738 [error] #PID<0.214671.0> running PinchflatWeb.Endpoint (connection #PID<0.214670.0>, stream id 1) terminated Server: pf.kjin.cloud: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.214670.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.vscode/sftp.json", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55844}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214671.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/.vscode/sftp.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ3Azy7s3en9kAGnWC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214670.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.vscode/sftp.json", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55844}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, 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.214670.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.vscode/sftp.json", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55844}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214671.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/.vscode/sftp.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ3Azy7s3en9kAGnWC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/rou (truncated) 08:36:28.709 [info] GET /about 08:36:28.710 [debug] QUERY OK source="settings" db=0.4ms idle=1266.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:28.711 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=707.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:28.711 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:28.711 [error] #PID<0.214673.0> running PinchflatWeb.Endpoint (connection #PID<0.214672.0>, stream id 1) terminated Server: pf.kjin.cloud: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.214672.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/about", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55852}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214673.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/about", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ3IKHkLq96q4AK_CB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214672.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/about", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55852}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, 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.214672.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/about", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55852}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214673.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/about", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ3IKHkLq96q4AK_CB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchf (truncated) 08:36:29.703 [info] GET /debug/default/view 08:36:29.704 [debug] QUERY OK source="settings" db=0.2ms idle=1260.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:29.704 [debug] QUERY OK source="settings" db=0.1ms idle=1260.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:29.704 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:29.704 [error] #PID<0.214677.0> running PinchflatWeb.Endpoint (connection #PID<0.214676.0>, stream id 1) terminated Server: pf.kjin.cloud: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.214676.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/debug/default/view", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55858}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "panel=config", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214677.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{"panel" => "config"}, query_string: "panel=config", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/debug/default/view", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ3L3EmmzGKQoAGnYC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214676.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/debug/default/view", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55858}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "panel=config", host_info: :undefined, has_body: false, streamid: 1 }}, 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.214676.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/debug/default/view", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55858}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "panel=config", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214677.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{"panel" => "config"}, query_string: "panel=config", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/debug/default/view", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ3L3EmmzGKQoAGnYC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, stat (truncated) 08:36:30.693 [info] GET /v2/_catalog 08:36:30.693 [info] Sent 404 in 219µs 08:36:30.693 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:31.697 [info] GET /ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application 08:36:31.698 [debug] QUERY OK source="settings" db=0.1ms idle=1254.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:31.698 [debug] QUERY OK source="settings" db=0.2ms idle=1254.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:31.698 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:31.698 [error] #PID<0.214681.0> running PinchflatWeb.Endpoint (connection #PID<0.214680.0>, stream id 1) terminated Server: pf.kjin.cloud: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.214680.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55872}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214681.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], 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", "GIQZ3TSiHSC6baoAGnZC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214680.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55872}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, 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.214680.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/ecp/Current/exporttool/microsoft.exchange.ediscovery.exporttool.application", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55872}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214681.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/ecp/Current/exporttool (truncated) 08:36:32.696 [info] GET /server-status 08:36:32.697 [debug] QUERY OK source="settings" db=0.2ms idle=1253.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:32.697 [debug] QUERY OK source="settings" db=0.0ms idle=1254.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:32.697 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:32.698 [error] #PID<0.214683.0> running PinchflatWeb.Endpoint (connection #PID<0.214682.0>, stream id 1) terminated Server: pf.kjin.cloud: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.214682.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server-status", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55878}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214683.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/server-status", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ3XAyrFiicDEAGnaC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214682.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server-status", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55878}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, 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.214682.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/server-status", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55878}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214683.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/server-status", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ3XAyrFiicDEAGnaC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, (truncated) 08:36:33.701 [info] GET /login.action 08:36:33.702 [debug] QUERY OK source="settings" db=0.2ms idle=1004.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:33.702 [debug] QUERY OK source="settings" db=0.1ms idle=1004.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:33.702 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:33.702 [error] #PID<0.214685.0> running PinchflatWeb.Endpoint (connection #PID<0.214684.0>, stream id 1) terminated Server: pf.kjin.cloud: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.214684.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/login.action", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55882}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214685.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/login.action", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ3awVU0Q824oAGnbC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214684.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/login.action", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55882}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, 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.214684.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/login.action", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55882}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214685.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/login.action", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ3awVU0Q824oAGnbC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_buil (truncated) 08:36:34.320 [info] GET / 08:36:34.320 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 08:36:34.321 [debug] QUERY OK source="settings" db=0.1ms idle=877.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:34.321 [debug] QUERY OK source="media_profiles" db=0.1ms idle=877.8ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 08:36:34.321 [debug] QUERY OK source="sources" db=0.0ms idle=619.5ms SELECT count(s0."id") FROM "sources" AS s0 [] 08:36:34.322 [info] GET / 08:36:34.322 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 08:36:34.323 [debug] QUERY OK source="settings" db=0.5ms idle=306.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:34.324 [debug] QUERY OK source="media_profiles" db=1.2ms idle=1.9ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 08:36:34.325 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=3.0ms SELECT count(s0."id") FROM "sources" AS s0 [] 08:36:34.327 [debug] QUERY OK source="media_items" db=2.4ms idle=3.3ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:36:34.331 [debug] QUERY OK source="media_items" db=3.1ms idle=4.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:36:34.331 [debug] QUERY OK source="settings" db=0.4ms idle=6.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:36:34.331 [debug] QUERY OK source="media_items" db=9.8ms idle=619.5ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:36:34.332 [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 [] 08:36:34.333 [debug] QUERY OK source="settings" db=0.5ms idle=1.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:36:34.333 [debug] QUERY OK source="media_items" db=1.5ms idle=4.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:36:34.334 [debug] QUERY OK source="tasks" db=0.3ms idle=1.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"] 08:36:34.334 [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 [] 08:36:34.334 [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 [] 08:36:34.334 [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 [] 08:36:34.335 [debug] QUERY OK source="media_items" db=0.9ms idle=1.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)) [] 08:36:34.335 [debug] QUERY OK source="tasks" db=0.2ms idle=1.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"] 08:36:34.335 [debug] QUERY OK source="media_items" db=0.3ms 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 INNER JOIN "sources" AS s1 ON s1."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] 08:36:34.337 [debug] QUERY OK source="sources" db=1.1ms idle=1.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [3, 2, 7] 08:36:34.337 [debug] QUERY OK source="media_items" db=2.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)) [] 08:36:34.338 [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 (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 08:36:34.339 [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 (?,?,?)) [3, 2, 7] 08:36:34.339 [debug] QUERY OK source="media_items" db=1.6ms 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"))) [] 08:36:34.340 [debug] QUERY OK source="media_items" db=0.5ms 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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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] 08:36:34.341 [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" = ?) [4] 08:36:34.341 [debug] QUERY OK source="media_items" db=1.5ms 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"))) [] 08:36:34.342 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms 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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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] 08:36:34.342 [info] Sent 200 in 20ms 08:36:34.343 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 08:36:34.344 [info] Sent 200 in 23ms 08:36:34.695 [info] GET /_all_dbs 08:36:34.696 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=355.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:34.696 [debug] QUERY OK source="settings" db=0.1ms idle=355.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:34.696 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:34.696 [error] #PID<0.214691.0> running PinchflatWeb.Endpoint (connection #PID<0.214690.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /_all_dbs ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /_all_dbs (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214690.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_all_dbs", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55894}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "content-type" => "application/json", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214691.0>, params: %{}, path_info: ["_all_dbs"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"content-type", "application/json"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/_all_dbs", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ3edORRwImyIADQ4D"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214690.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_all_dbs", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55894}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "content-type" => "application/json", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /_all_dbs (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214690.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_all_dbs", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55894}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "content-type" => "application/json", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214691.0>, params: %{}, path_info: ["_all_dbs"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"content-type", "application/json"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/_all_dbs", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ3edORRwImyIADQ4D"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil (truncated) 08:36:35.703 [info] GET /.DS_Store 08:36:35.704 [debug] QUERY OK source="settings" db=0.2ms idle=1007.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:35.704 [debug] QUERY OK source="settings" db=0.1ms idle=1007.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:35.704 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:35.704 [error] #PID<0.214709.0> running PinchflatWeb.Endpoint (connection #PID<0.214708.0>, stream id 1) terminated Server: pf.kjin.cloud: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.214708.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.DS_Store", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55930}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214709.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/.DS_Store", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ3iNnYVFPYGEAK_JB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214708.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.DS_Store", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55930}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, 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.214708.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.DS_Store", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55930}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214709.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/.DS_Store", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ3iNnYVFPYGEAK_JB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pi (truncated) 08:36:36.404 [info] CONNECTED TO Phoenix.LiveView.Socket in 204µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "Vy1VMyNYYE1_cCElZFEfIhBXGSxXCSJj2DaZnh672CPqRfIAy8pfaVE4", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pf.kjin.cloud/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pf.kjin.cloud/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 08:36:36.598 [debug] MOUNT Pinchflat.Pages.HistoryTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "ei4iM0VzM3qT67VcioiJ6_gW", "media_state" => "downloaded"} 08:36:36.599 [debug] QUERY OK source="media_items" db=1.1ms idle=1155.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)) [] 08:36:36.600 [debug] QUERY OK source="media_items" db=0.3ms idle=1156.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] 08:36:36.601 [debug] QUERY OK source="sources" db=0.2ms idle=896.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 (?,?,?)) [3, 2, 7] 08:36:36.601 [debug] Replied in 2ms 08:36:36.603 [debug] MOUNT Pinchflat.Pages.HistoryTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "ei4iM0VzM3qT67VcioiJ6_gW", "media_state" => "pending"} 08:36:36.604 [debug] QUERY OK source="media_items" db=1.3ms idle=898.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"))) [] 08:36:36.605 [debug] QUERY OK source="media_items" db=0.3ms idle=583.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] 08:36:36.605 [debug] QUERY OK source="sources" db=0.2ms idle=5.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 08:36:36.605 [debug] Replied in 2ms 08:36:36.607 [debug] MOUNT Pinchflat.Pages.JobTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "ei4iM0VzM3qT67VcioiJ6_gW"} 08:36:36.608 [debug] QUERY OK source="tasks" db=0.2ms idle=7.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"] 08:36:36.608 [debug] Replied in 688µs 08:36:36.608 [debug] MOUNT Pinchflat.UpgradeButtonLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "ei4iM0VzM3qT67VcioiJ6_gW"} 08:36:36.608 [debug] Replied in 88µs 08:36:36.709 [info] GET /.env 08:36:36.709 [debug] QUERY OK source="settings" db=0.1ms idle=108.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:36:36.714 [debug] QUERY OK source="settings" db=0.1ms idle=109.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:36.714 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:36.714 [error] #PID<0.214729.0> running PinchflatWeb.Endpoint (connection #PID<0.214728.0>, stream id 1) terminated Server: pf.kjin.cloud: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.214728.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55962}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214729.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ3l9XKNNGNScAGngC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214728.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55962}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, 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.214728.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.env", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55962}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214729.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/.env", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ3l9XKNNGNScAGngC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line (truncated) 08:36:36.807 [info] CONNECTED TO Phoenix.LiveView.Socket in 28µs Transport: :websocket Serializer: Phoenix.Socket.V2.JSONSerializer Parameters: %{"_csrf_token" => "ZCIEcmc5Aj5nIixXCC8-Hj4QMBk9A0A_UHIB6IEJ7Ht0dcdSFTtCGAug", "_live_referer" => "undefined", "_mount_attempts" => "0", "_mounts" => "0", "_track_static" => %{"0" => "https://pf.kjin.cloud/assets/app-84c55c57753816656f5134f541d32ba5.css?vsn=d", "1" => "https://pf.kjin.cloud/assets/app-521b5c83d8b2f79295a25943104e99d5.js?vsn=d"}, "vsn" => "2.0.0"} 08:36:37.094 [debug] MOUNT Pinchflat.Pages.HistoryTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "1jM0QpGtPjXglLZMxDDZzB5X", "media_state" => "downloaded"} 08:36:37.096 [debug] QUERY OK source="media_items" db=1.2ms idle=489.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)) [] 08:36:37.097 [debug] QUERY OK source="media_items" db=0.4ms idle=488.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] 08:36:37.097 [debug] QUERY OK source="sources" db=0.3ms idle=387.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [3, 2, 7] 08:36:37.097 [debug] Replied in 3ms 08:36:37.099 [debug] MOUNT Pinchflat.Pages.HistoryTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "1jM0QpGtPjXglLZMxDDZzB5X", "media_state" => "pending"} 08:36:37.100 [debug] QUERY OK source="media_items" db=1.5ms idle=385.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"))) [] 08:36:37.101 [debug] QUERY OK source="media_items" db=0.5ms idle=78.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] 08:36:37.102 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 08:36:37.102 [debug] Replied in 3ms 08:36:37.103 [debug] MOUNT Pinchflat.Pages.JobTableLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "1jM0QpGtPjXglLZMxDDZzB5X"} 08:36:37.103 [debug] QUERY OK source="tasks" db=0.1ms 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"] 08:36:37.103 [debug] Replied in 570µs 08:36:37.104 [debug] MOUNT Pinchflat.UpgradeButtonLive Parameters: :not_mounted_at_router Session: %{"_csrf_token" => "1jM0QpGtPjXglLZMxDDZzB5X"} 08:36:37.104 [debug] Replied in 89µs 08:36:38.699 [info] GET /.git/config 08:36:38.700 [debug] QUERY OK source="settings" db=0.2ms idle=674.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:38.700 [debug] QUERY OK source="settings" db=0.0ms idle=256.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:38.700 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:38.700 [error] #PID<0.214737.0> running PinchflatWeb.Endpoint (connection #PID<0.214736.0>, stream id 1) terminated Server: pf.kjin.cloud: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.214736.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.git/config", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55970}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214737.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/.git/config", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ3tX5brmgdyIAGnhC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214736.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.git/config", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55970}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, 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.214736.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/.git/config", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55970}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214737.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/.git/config", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ3tX5brmgdyIAGnhC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {Pinchflat (truncated) 08:36:39.711 [info] GET /s/1323e2931323e2435323e21363/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties 08:36:39.711 [debug] QUERY OK source="settings" db=0.1ms idle=1268.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:39.712 [debug] QUERY OK source="settings" db=0.1ms idle=1268.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:39.712 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:39.712 [error] #PID<0.214747.0> running PinchflatWeb.Endpoint (connection #PID<0.214746.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /s/1323e2931323e2435323e21363/_/;/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/1323e2931323e2435323e21363/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214746.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/s/1323e2931323e2435323e21363/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55990}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214747.0>, params: %{}, path_info: ["s", "1323e2931323e2435323e21363", "_", ";", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/s/1323e2931323e2435323e21363/_/;/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", "GIQZ3xJJ1Vk-jnMAK_LB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214746.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/s/1323e2931323e2435323e21363/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55990}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /s/1323e2931323e2435323e21363/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214746.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/s/1323e2931323e2435323e21363/_/;/META-INF/maven/com.atlassian.jira/jira-webapp-dist/pom.properties", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 55990}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214747.0>, params: %{}, path_info: ["s", "1323e2931323e2435323e21363", "_", ";", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net) (truncated) 08:36:40.707 [info] GET /config.json 08:36:40.707 [debug] QUERY OK source="settings" db=0.1ms idle=995.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:40.708 [debug] QUERY OK source="settings" db=0.1ms idle=995.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:40.708 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:40.708 [error] #PID<0.214749.0> running PinchflatWeb.Endpoint (connection #PID<0.214748.0>, stream id 1) terminated Server: pf.kjin.cloud: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.214748.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.json", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 56002}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214749.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/config.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ302lbVnoRDYAGniC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214748.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.json", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 56002}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, 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.214748.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/config.json", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 56002}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214749.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/config.json", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ302lbVnoRDYAGniC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builde (truncated) 08:36:41.712 [info] GET /telescope/requests 08:36:41.713 [debug] QUERY OK source="settings" db=0.1ms idle=1269.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:41.713 [debug] QUERY OK source="settings" db=0.0ms idle=1269.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:41.713 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:41.713 [error] #PID<0.214751.0> running PinchflatWeb.Endpoint (connection #PID<0.214750.0>, stream id 1) terminated Server: pf.kjin.cloud: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.214750.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/telescope/requests", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 56016}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214751.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/telescope/requests", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ34mRnymtkYgAGnjC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214750.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/telescope/requests", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 56016}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, 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.214750.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/telescope/requests", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 56016}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214751.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/telescope/requests", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ34mRnymtkYgAGnjC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~ (truncated) 08:36:42.729 [info] GET /info.php 08:36:42.730 [debug] QUERY OK source="settings" db=0.1ms idle=1016.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:42.730 [debug] QUERY OK source="settings" db=0.1ms idle=1016.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:36:42.730 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:36:42.730 [error] #PID<0.214753.0> running PinchflatWeb.Endpoint (connection #PID<0.214752.0>, stream id 1) terminated Server: pf.kjin.cloud: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.214752.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/info.php", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 56020}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214753.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/info.php", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ38YvmFbhS-8AGnkC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214752.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/info.php", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 56020}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, 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.214752.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/info.php", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 56020}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept-encoding" => "gzip", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "165.227.84.14" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214753.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept-encoding", "gzip"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 (l9scan/2.0.1323e2931323e2435323e21363; +https://leakix.net)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "165.227.84.14"} ], request_path: "/info.php", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ38YvmFbhS-8AGnkC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: (truncated) 08:36:43.713 [info] GET / 08:36:43.713 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{"rest_route" => "/wp/v2/users/"} Pipelines: [:browser] 08:36:43.713 [debug] QUERY OK source="settings" db=0.2ms idle=1270.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:43.714 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1270.5ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 08:36:43.714 [debug] QUERY OK source="sources" db=0.1ms idle=984.1ms SELECT count(s0."id") FROM "sources" AS s0 [] 08:36:43.716 [debug] QUERY OK source="media_items" db=1.7ms idle=984.1ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:36:43.717 [debug] QUERY OK source="media_items" db=0.8ms idle=680.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:36:43.717 [debug] QUERY OK source="settings" db=0.1ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:36:43.717 [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 [] 08:36:43.718 [debug] QUERY OK source="settings" db=0.1ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:36:43.719 [debug] QUERY OK source="tasks" db=0.3ms 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"] 08:36:43.720 [debug] QUERY OK source="media_items" db=0.6ms 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)) [] 08:36:43.720 [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] 08:36:43.721 [debug] QUERY OK source="sources" db=0.3ms 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 (?,?,?)) [3, 2, 7] 08:36:43.723 [debug] QUERY OK source="media_items" db=1.3ms 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"))) [] 08:36:43.723 [debug] QUERY OK source="media_items" db=0.4ms 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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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] 08:36:43.724 [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" = ?) [4] 08:36:43.725 [info] Sent 200 in 12ms 08:36:51.783 [info] {"source":"oban","duration":1815,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:37:00.871 [info] {"source":"oban","duration":365,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:37:05.195 [info] GET / 08:37:05.195 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 08:37:05.196 [debug] QUERY OK source="settings" db=0.1ms idle=1752.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:37:05.196 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1752.9ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 08:37:05.196 [debug] QUERY OK source="sources" db=0.2ms idle=1117.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 08:37:05.198 [debug] QUERY OK source="media_items" db=1.9ms idle=753.5ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:37:05.200 [debug] QUERY OK source="media_items" db=0.8ms idle=118.2ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:37:05.200 [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 [] 08:37:05.200 [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 [] 08:37:05.201 [debug] QUERY OK source="settings" db=0.1ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:37:05.202 [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"] 08:37:05.203 [debug] QUERY OK source="media_items" db=0.6ms 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 (m0."media_filepath" IS NULL)) [] 08:37:05.203 [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] 08:37:05.204 [debug] QUERY OK source="sources" db=0.2ms idle=3.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [3, 2, 7] 08:37:05.206 [debug] QUERY OK source="media_items" db=1.3ms 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"))) [] 08:37:05.206 [debug] QUERY OK source="media_items" db=0.4ms 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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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] 08:37:05.207 [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" = ?) [4] 08:37:05.208 [info] Sent 200 in 12ms 08:37:21.785 [info] {"source":"oban","duration":1447,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:37:51.788 [info] {"source":"oban","duration":1988,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:37:52.869 [info] GET / 08:37:52.869 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 08:37:52.869 [debug] QUERY OK source="settings" db=0.2ms idle=1426.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:37:52.870 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1081.6ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 08:37:52.870 [debug] QUERY OK source="sources" db=0.1ms idle=685.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 08:37:52.872 [debug] QUERY OK source="media_items" db=2.2ms idle=427.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:37:52.873 [debug] QUERY OK source="media_items" db=0.8ms idle=429.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:37:52.874 [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 [] 08:37:52.874 [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 [] 08:37:52.874 [debug] QUERY OK source="settings" db=0.1ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:37:52.875 [debug] QUERY OK source="tasks" db=0.2ms 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"] 08:37:52.877 [debug] QUERY OK source="media_items" db=0.8ms 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)) [] 08:37:52.877 [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] 08:37:52.878 [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 (?,?,?)) [3, 2, 7] 08:37:52.880 [debug] QUERY OK source="media_items" db=1.5ms 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"))) [] 08:37:52.881 [debug] QUERY OK source="media_items" db=0.3ms 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] 08:37:52.881 [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" = ?) [4] 08:37:52.882 [info] Sent 200 in 13ms 08:38:00.873 [info] {"source":"oban","duration":505,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:38:02.345 [info] HEAD / 08:38:02.345 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 08:38:02.345 [debug] QUERY OK source="settings" db=0.1ms idle=1901.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:02.345 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1902.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 08:38:02.346 [debug] QUERY OK source="sources" db=0.0ms idle=1472.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 08:38:02.347 [debug] QUERY OK source="media_items" db=1.8ms idle=1141.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:38:02.348 [debug] QUERY OK source="media_items" db=0.8ms idle=141.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:38:02.349 [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 [] 08:38:02.349 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:38:02.350 [debug] QUERY OK source="settings" db=0.2ms idle=4.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:38:02.351 [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"] 08:38:02.352 [debug] QUERY OK source="media_items" db=0.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 (m0."media_filepath" IS NULL)) [] 08:38:02.353 [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] 08:38:02.353 [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 (?,?,?)) [3, 2, 7] 08:38:02.355 [debug] QUERY OK source="media_items" db=1.4ms 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"))) [] 08:38:02.356 [debug] QUERY OK source="media_items" db=0.3ms 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] 08:38:02.356 [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" = ?) [4] 08:38:02.357 [info] Sent 200 in 12ms 08:38:02.675 [info] GET / 08:38:02.675 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 08:38:02.676 [debug] QUERY OK source="settings" db=0.3ms idle=322.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:38:02.676 [debug] QUERY OK source="media_profiles" db=0.2ms idle=323.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 08:38:02.677 [debug] QUERY OK source="sources" db=0.0ms idle=321.3ms SELECT count(s0."id") FROM "sources" AS s0 [] 08:38:02.679 [debug] QUERY OK source="media_items" db=1.7ms idle=321.0ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:38:02.679 [debug] QUERY OK source="media_items" db=0.8ms idle=322.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:38:02.680 [debug] QUERY OK source="settings" db=0.1ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:38:02.680 [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 [] 08:38:02.681 [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 [] 08:38:02.682 [debug] QUERY OK source="tasks" db=0.1ms idle=2.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"] 08:38:02.683 [debug] QUERY OK source="media_items" db=0.6ms 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 (m0."media_filepath" IS NULL)) [] 08:38:02.683 [debug] QUERY OK source="media_items" db=0.3ms 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] 08:38:02.684 [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 (?,?,?)) [3, 2, 7] 08:38:02.686 [debug] QUERY OK source="media_items" db=1.3ms 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"))) [] 08:38:02.687 [debug] QUERY OK source="media_items" db=0.4ms 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] 08:38:02.687 [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] 08:38:02.688 [info] Sent 200 in 12ms 08:38:03.940 [info] HEAD /_next 08:38:03.941 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1256.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:03.941 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=1254.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:03.941 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:38:03.942 [error] #PID<0.214777.0> running PinchflatWeb.Endpoint (connection #PID<0.214776.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /_next ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /_next (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214776.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 56284}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214777.0>, params: %{}, path_info: ["_next"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/_next"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/_next", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ8q64WSxLPiUAGn8C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214776.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 56284}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /_next (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214776.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 56284}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214777.0>, params: %{}, path_info: ["_next"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/_next"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/_next", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ8q64WSxLPiUAGn8C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status (truncated) 08:38:04.236 [info] HEAD /__rsc 08:38:04.237 [debug] QUERY OK source="settings" db=0.2ms idle=1549.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:04.237 [debug] QUERY OK source="settings" db=0.1ms idle=1028.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:04.237 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:38:04.238 [error] #PID<0.214779.0> running PinchflatWeb.Endpoint (connection #PID<0.214778.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /__rsc ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /__rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214778.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 56288}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214779.0>, params: %{}, path_info: ["__rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/__rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/__rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ8sBmowTOe9YAGn9C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214778.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 56288}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /__rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214778.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 56288}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214779.0>, params: %{}, path_info: ["__rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/__rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/__rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ8sBmowTOe9YAGn9C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status (truncated) 08:38:04.501 [info] HEAD /rsc 08:38:04.502 [debug] QUERY OK source="settings" db=0.2ms idle=560.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:04.502 [debug] QUERY OK source="settings" db=0.2ms idle=560.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:04.502 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 08:38:04.503 [error] #PID<0.214781.0> running PinchflatWeb.Endpoint (connection #PID<0.214780.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /rsc ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214780.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 56292}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214781.0>, params: %{}, path_info: ["rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ8tAsVou6iw0AGn-C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214780.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 56292}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.214780.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 56292}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.214781.0>, params: %{}, path_info: ["rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQZ8tAsVou6iw0AGn-C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, route (truncated) 08:38:21.791 [info] {"source":"oban","duration":1505,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:38:51.792 [info] {"source":"oban","duration":1542,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:39:00.875 [info] {"source":"oban","duration":694,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:39:21.794 [info] {"source":"oban","duration":1050,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:39:51.796 [info] {"source":"oban","duration":1576,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:40:00.877 [info] {"source":"oban","duration":500,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:40:21.798 [info] {"source":"oban","duration":1336,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:40:42.448 [info] GET / 08:40:42.449 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 08:40:42.449 [debug] QUERY OK source="settings" db=0.3ms 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 [] 08:40:42.450 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1006.4ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 08:40:42.450 [debug] QUERY OK source="sources" db=0.0ms idle=1006.7ms SELECT count(s0."id") FROM "sources" AS s0 [] 08:40:42.452 [debug] QUERY OK source="media_items" db=1.8ms idle=1006.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:40:42.453 [debug] QUERY OK source="media_items" db=0.9ms idle=912.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:40:42.453 [debug] QUERY OK source="settings" db=0.1ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:40:42.453 [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 [] 08:40:42.454 [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 [] 08:40:42.455 [debug] QUERY OK source="tasks" db=0.2ms idle=2.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"] 08:40:42.456 [debug] QUERY OK source="media_items" db=0.6ms 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 (m0."media_filepath" IS NULL)) [] 08:40:42.457 [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] 08:40:42.457 [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 (?,?,?)) [3, 2, 7] 08:40:42.459 [debug] QUERY OK source="media_items" db=1.6ms 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"))) [] 08:40:42.460 [debug] QUERY OK source="media_items" db=0.5ms 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] 08:40:42.461 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 08:40:42.461 [info] Sent 200 in 13ms 08:40:43.442 [info] GET / 08:40:43.443 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 08:40:43.443 [debug] QUERY OK source="settings" db=0.3ms idle=985.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:40:43.443 [debug] QUERY OK source="media_profiles" db=0.1ms idle=983.7ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 08:40:43.444 [debug] QUERY OK source="sources" db=0.1ms idle=983.3ms SELECT count(s0."id") FROM "sources" AS s0 [] 08:40:43.446 [debug] QUERY OK source="media_items" db=2.1ms idle=983.1ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:40:43.447 [debug] QUERY OK source="media_items" db=0.9ms idle=904.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:40:43.447 [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 [] 08:40:43.448 [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 [] 08:40:43.448 [debug] QUERY OK source="settings" db=0.1ms idle=4.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:40:43.449 [debug] QUERY OK source="tasks" db=0.2ms 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"] 08:40:43.450 [debug] QUERY OK source="media_items" db=0.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 (m0."media_filepath" IS NULL)) [] 08:40:43.451 [debug] QUERY OK source="media_items" db=0.4ms 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] 08:40:43.452 [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 (?,?,?)) [3, 2, 7] 08:40:43.454 [debug] QUERY OK source="media_items" db=1.4ms 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"))) [] 08:40:43.454 [debug] QUERY OK source="media_items" db=0.4ms 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] 08:40:43.455 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [4] 08:40:43.456 [info] Sent 200 in 13ms 08:40:43.593 [info] GET / 08:40:43.594 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 08:40:43.594 [debug] QUERY OK source="settings" db=0.3ms idle=142.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:40:43.595 [debug] QUERY OK source="media_profiles" db=0.4ms idle=140.6ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 08:40:43.596 [debug] QUERY OK source="sources" db=0.3ms queue=0.2ms idle=140.7ms SELECT count(s0."id") FROM "sources" AS s0 [] 08:40:43.600 [debug] QUERY OK source="media_items" db=4.1ms queue=0.1ms idle=140.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:40:43.601 [debug] QUERY OK source="media_items" db=1.1ms queue=0.1ms idle=55.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:40:43.602 [debug] QUERY OK source="settings" db=0.3ms 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 [] 08:40:43.603 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=7.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:40:43.604 [debug] QUERY OK source="settings" db=0.2ms idle=7.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:40:43.605 [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"] 08:40:43.606 [debug] QUERY OK source="media_items" db=0.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 (m0."media_filepath" IS NULL)) [] 08:40:43.607 [debug] QUERY OK source="media_items" db=0.4ms 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] 08:40:43.607 [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 (?,?,?)) [3, 2, 7] 08:40:43.610 [debug] QUERY OK source="media_items" db=1.4ms 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"))) [] 08:40:43.610 [debug] QUERY OK source="media_items" db=0.4ms 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] 08:40:43.611 [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" = ?) [4] 08:40:43.612 [info] Sent 200 in 18ms 08:40:51.801 [info] {"source":"oban","duration":1816,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:41:00.879 [info] {"source":"oban","duration":529,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:41:21.803 [info] {"source":"oban","duration":1100,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:41:51.805 [info] {"source":"oban","duration":958,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:42:00.880 [info] {"source":"oban","duration":298,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:42:21.807 [info] {"source":"oban","duration":1472,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:42:51.809 [info] {"source":"oban","duration":767,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:43:00.882 [info] {"source":"oban","duration":1364,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:43:21.811 [info] {"source":"oban","duration":882,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:43:51.813 [info] {"source":"oban","duration":1242,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:44:00.884 [info] {"source":"oban","duration":806,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:44:21.815 [info] {"source":"oban","duration":1556,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:44:46.456 [info] GET / 08:44:46.457 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 08:44:46.457 [debug] QUERY OK source="settings" db=0.3ms idle=1012.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:44:46.457 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1013.2ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 08:44:46.458 [debug] QUERY OK source="sources" db=0.1ms idle=1013.4ms SELECT count(s0."id") FROM "sources" AS s0 [] 08:44:46.461 [debug] QUERY OK source="media_items" db=2.6ms idle=1013.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:44:46.462 [debug] QUERY OK source="media_items" db=1.0ms idle=414.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 08:44:46.462 [debug] QUERY OK source="settings" db=0.2ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:44:46.463 [debug] QUERY OK source="settings" db=0.1ms idle=5.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:44:46.463 [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 [] 08:44:46.464 [debug] QUERY OK source="tasks" db=0.3ms 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"] 08:44:46.465 [debug] QUERY OK source="media_items" db=0.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 (m0."media_filepath" IS NULL)) [] 08:44:46.466 [debug] QUERY OK source="media_items" db=0.3ms 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] 08:44:46.466 [debug] QUERY OK source="sources" db=0.3ms 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 (?,?,?)) [3, 2, 7] 08:44:46.469 [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"))) [] 08:44:46.470 [debug] QUERY OK source="media_items" db=0.4ms 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] 08:44:46.470 [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" = ?) [4] 08:44:46.471 [info] Sent 200 in 14ms 08:44:51.817 [info] {"source":"oban","duration":1229,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:45:00.886 [info] {"source":"oban","duration":475,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:45:21.819 [info] {"source":"oban","duration":1233,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:45:51.821 [info] {"source":"oban","duration":1404,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:46:00.888 [info] {"source":"oban","duration":728,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:46:21.823 [info] {"source":"oban","duration":1419,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:46:51.826 [info] {"source":"oban","duration":1792,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:47:00.890 [info] {"source":"oban","duration":408,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:47:21.828 [info] {"source":"oban","duration":1297,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:47:51.830 [info] {"source":"oban","duration":1144,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:48:00.891 [info] {"source":"oban","duration":521,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:48:21.832 [info] {"source":"oban","duration":1003,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:48:51.834 [info] {"source":"oban","duration":1049,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:49:00.892 [info] {"source":"oban","duration":524,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:49:21.836 [info] {"source":"oban","duration":1367,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:49:51.838 [info] {"source":"oban","duration":1393,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:50:00.894 [info] {"source":"oban","duration":1543,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:50:21.840 [info] {"source":"oban","duration":1044,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:50:51.842 [info] {"source":"oban","duration":1432,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:51:00.895 [info] {"source":"oban","duration":242,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:51:21.844 [info] {"source":"oban","duration":1301,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:51:51.846 [info] {"source":"oban","duration":781,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:52:00.897 [info] {"source":"oban","duration":440,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:52:21.848 [info] {"source":"oban","duration":1145,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:52:44.042 [info] {"args":{"id":7},"id":7406,"meta":{},"system_time":1766566364042362478,"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"]} 08:52:44.045 [debug] QUERY OK source="sources" db=2.4ms idle=598.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:52:44.047 [debug] QUERY OK source="settings" db=1.6ms idle=600.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:52:44.050 [debug] QUERY OK source="media_items" db=2.7ms idle=602.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")))) [7] 08:52:44.052 [debug] QUERY OK source="media_items" db=2.4ms idle=16.9ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [7] 08:52:44.053 [debug] QUERY OK source="media_profiles" db=0.1ms idle=10.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] 08:52:44.053 [debug] QUERY OK source="settings" db=0.1ms idle=8.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:52:44.054 [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 [] 08:52:44.056 [debug] QUERY OK source="media_items" db=1.5ms 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."source_id" = ?) ORDER BY m0."uploaded_at" DESC LIMIT 50 OFFSET 20 [7] 08:52:44.072 [debug] Running yt-dlp command for action: get_media_attributes_for_collection 08:52:44.073 [debug] Current batch of media processed. Will check again in 1000ms 08:52:44.073 [debug] QUERY OK source="settings" db=0.1ms idle=20.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:52:44.073 [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 [] 08:52:44.073 [debug] QUERY OK source="settings" db=0.1ms idle=19.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 08:52:44.073 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@JeffGeerling --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/JeffGeerling/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/aa/17/aa179ee37ed1578b01dc6abf5214313ea4dc606547099f6570fa8bdd7a5f0e5b.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/da/de/dade78eb94bb19a45387b7294b841a213e994e5da0619932be5edd7b2ed1ae4b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 08:52:45.074 [debug] Current batch of media processed. Will check again in 1000ms 08:52:46.075 [debug] Current batch of media processed. Will check again in 1000ms 08:52:47.076 [debug] Current batch of media processed. Will check again in 1000ms 08:52:48.077 [debug] Current batch of media processed. Will check again in 1000ms 08:52:49.079 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "...but most people would never know.\n\nThe two posts referenced in this video:\n\n - Primary time scale failure: https://groups.google.com/a/list.nist.gov/g/internet-time-service/c/o0dDDcr1a8I\n - Update on Internet Time Services: https://groups.google.com/a/list.nist.gov/g/internet-time-service/c/OHOO_1OYjLY\n\nAlso check out the status of all NIST Internet Time Servers: https://tf.nist.gov/tf-cgi/servers.cgi\n\nThumbnail photos were adapted from Wikipedia Commons / US Government Public domain images:\n\n - https://www.nist.gov/pml/time-and-frequency-division/time-and-frequency-metrology-and-distribution\n - https://www.nist.gov/topics/physics/optical-frequency-combs\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - 5 microseconds\n00:39 - What happened?\n02:15 - NTP timing and why it doesn't matter\n03:17 - Timely lessons", "duration" => 317, "filename" => "/downloads/JeffGeerling/2025-12-22 NIST's NTP clock was microseconds from disaster/NIST's NTP clock was microseconds from disaster [ZRB7pjRVVkI].mkv", "id" => "ZRB7pjRVVkI", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=ZRB7pjRVVkI", "playlist_index" => 1, "timestamp" => 1766420589, "title" => "NIST's NTP clock was microseconds from disaster", "upload_date" => "20251222"} 08:52:49.080 [debug] QUERY OK source="sources" db=0.2ms idle=1635.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] 08:52:49.080 [debug] QUERY OK source="sources" db=0.1ms idle=1635.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:52:49.081 [debug] QUERY OK source="media_items" db=0.5ms idle=1636.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-22 16:23:09Z], 7] 08:52:49.082 [debug] QUERY OK source="media_items" db=0.8ms idle=1040.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["...but most people would never know.\n\nThe two posts referenced in this video:\n\n - Primary time scale failure: https://groups.google.com/a/list.nist.gov/g/internet-time-service/c/o0dDDcr1a8I\n - Update on Internet Time Services: https://groups.google.com/a/list.nist.gov/g/internet-time-service/c/OHOO_1OYjLY\n\nAlso check out the status of all NIST Internet Time Servers: https://tf.nist.gov/tf-cgi/servers.cgi\n\nThumbnail photos were adapted from Wikipedia Commons / US Government Public domain images:\n\n - https://www.nist.gov/pml/time-and-frequency-division/time-and-frequency-metrology-and-distribution\n - https://www.nist.gov/topics/physics/optical-frequency-combs\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - 5 microseconds\n00:39 - What happened?\n02:15 - NTP timing and why it doesn't matter\n03:17 - Timely lessons", "NIST's NTP clock was microseconds from disaster", "8ca99834-8eb6-4ec0-b03b-bacf03b2ddeb", "https://www.youtube.com/watch?v=ZRB7pjRVVkI", "ZRB7pjRVVkI", false, 317, false, 1, "/downloads/JeffGeerling/2025-12-22 NIST's NTP clock was microseconds from disaster/NIST's NTP clock was microseconds from disaster [ZRB7pjRVVkI].mkv", false, false, 7, [], 98, ~U[2025-12-22 16:23:09Z], ~U[2025-12-24 08:52:49Z], ~U[2025-12-24 08:52:49Z], "...but most people would never know.\n\nThe two posts referenced in this video:\n\n - Primary time scale failure: https://groups.google.com/a/list.nist.gov/g/internet-time-service/c/o0dDDcr1a8I\n - Update on Internet Time Services: https://groups.google.com/a/list.nist.gov/g/internet-time-service/c/OHOO_1OYjLY\n\nAlso check out the status of all NIST Internet Time Servers: https://tf.nist.gov/tf-cgi/servers.cgi\n\nThumbnail photos were adapted from Wikipedia Commons / US Government Public domain images:\n\n - https://www.nist.gov/pml/time-and-frequency-division/time-and-frequency-metrology-and-distribution\n - https://www.nist.gov/topics/physics/optical-frequency-combs\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - 5 microseconds\n00:39 - What happened?\n02:15 - NTP timing and why it doesn't matter\n03:17 - Timely lessons", "NIST's NTP clock was microseconds from disaster", "https://www.youtube.com/watch?v=ZRB7pjRVVkI", "ZRB7pjRVVkI", 317, false, "/downloads/JeffGeerling/2025-12-22 NIST's NTP clock was microseconds from disaster/NIST's NTP clock was microseconds from disaster [ZRB7pjRVVkI].mkv", false, 7, ~U[2025-12-22 16:23:09Z]] 08:52:49.083 [debug] QUERY OK source="sources" db=0.2ms idle=39.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 08:52:49.083 [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] 08:52:49.084 [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 [29046] 08:52:49.084 [debug] Current batch of media processed. Will check again in 1000ms 08:52:50.085 [debug] Current batch of media processed. Will check again in 1000ms 08:52:51.087 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Shop Micro Center Holiday Deals: https://micro.center/e787eb\nCheck out Micro Center's Other Top Deals: https://micro.center/315b05\nShop Micro Center Bundles: https://micro.center/f7b037\nVisit Micro Center News: https://micro.center/9b77f2\n\nCan a Raspberry Pi match the performance of a modern desktop PC when it comes to GPU performance?\n\nOf course not, in a general sense. But there are specific use cases where you'd be surprised by how close the Pi comes, performance-wise. In some cases, the Pi is actually faster!\n\nResources I mentioned in this video:\n\n - AI Benchmark results and methodology: https://github.com/geerlingguy/ai-benchmarks\n - Multi-GPU benchmark results: https://github.com/geerlingguy/ai-benchmarks/issues/44\n - Use AMD GPUs on Pi: https://www.jeffgeerling.com/blog/2025/using-amd-gpus-on-raspberry-pi-without-recompiling-linux\n - Use Nvidia GPUs on Pi: https://www.jeffgeerling.com/blog/2025/nvidia-graphics-cards-work-on-pi-5-and-rockchip\n - Use Intel GPUs on Pi: https://www.jeffgeerling.com/blog/2025/all-intel-gpus-run-on-raspberry-pi-and-risc-v\n\neGPU Setup (some links are affiliate links):\n\n - Minisforum DEG1 eGPU Dock: https://amzn.to/4s3gUz6\n - Micro SATA Cables Oculink to M.2 adapter: https://amzn.to/49dKKcE\n - Super Flower 850W PSU: https://www.microcenter.com/product/684393/super-flower-leadex-iii-gold-up-850-watt-80-plus-gold-atx-fully-modular-power-supply-atx-31-compatible\n - AMD Radeon AI Pro R9700: https://www.microcenter.com/product/702853/xfx-amd-radeon-ai-pro-r9700-single-fan-32gb-gddr6-pcie-50-graphics-card\n\nDual GPU Setup (some links are affiliate links):\n\n - chenyang PCIe 4.0 M.2 NGFF to SFF-8643: https://amzn.to/4pyqSqt\n - 10Gtek SFF-8644 to SFF-8643 Cable: https://amzn.to/3MKNbup\n - Dolphin PCIe HBA MXH932: https://dolphinics.com/products/MXH932.html\n - Dolphin 3 slot PCIe Backplane: https://dolphinics.com/products/IBP-G4X16-3.html\n\nHUGE thanks to Patrick from @ServeTheHomeVideo for helping me record at Micro Center in Phoenix :)\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Pi vs PC\n00:53 - Enough for Jellyfin? Local LLMs?\n01:50 - 4 GPUs 1 Pi\n02:16 - Comparing costs and energy use\n03:07 - Gaming on haitus (for now)\n03:39 - The setups\n04:56 - ffmpeg and Jellyfin media transcoding\n07:31 - 3D rendering with GravityMark\n08:39 - LLMs on AMD\n09:36 - LLMs on Nvidia\n12:27 - Drivers, Vulkan, and CUDA\n13:06 - Dual GPU - Setup\n15:24 - Sharing memory and PCIe ACS\n16:28 - llama.cpp performance - mixed Nvidia GPUs\n17:08 - 52GB of VRAM on AMD\n17:28 - Intel PC dual Nvidia GPU comparison\n17:56 - Who wins?", "duration" => 1120, "filename" => "/downloads/JeffGeerling/2025-12-20 2 GPUs 1 Pi/2 GPUs 1 Pi [8X2Y62JGDCo].mkv", "id" => "8X2Y62JGDCo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=8X2Y62JGDCo", "playlist_index" => 2, "timestamp" => 1766242824, "title" => "2 GPUs 1 Pi", "upload_date" => "20251220"} 08:52:51.087 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=643.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:52:51.088 [debug] QUERY OK source="sources" db=0.1ms idle=643.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] 08:52:51.089 [debug] QUERY OK source="media_items" db=0.7ms idle=644.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-20 15:00:24Z], 7] 08:52:51.091 [debug] QUERY OK source="media_items" db=1.2ms idle=644.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Shop Micro Center Holiday Deals: https://micro.center/e787eb\nCheck out Micro Center's Other Top Deals: https://micro.center/315b05\nShop Micro Center Bundles: https://micro.center/f7b037\nVisit Micro Center News: https://micro.center/9b77f2\n\nCan a Raspberry Pi match the performance of a modern desktop PC when it comes to GPU performance?\n\nOf course not, in a general sense. But there are specific use cases where you'd be surprised by how close the Pi comes, performance-wise. In some cases, the Pi is actually faster!\n\nResources I mentioned in this video:\n\n - AI Benchmark results and methodology: https://github.com/geerlingguy/ai-benchmarks\n - Multi-GPU benchmark results: https://github.com/geerlingguy/ai-benchmarks/issues/44\n - Use AMD GPUs on Pi: https://www.jeffgeerling.com/blog/2025/using-amd-gpus-on-raspberry-pi-without-recompiling-linux\n - Use Nvidia GPUs on Pi: https://www.jeffgeerling.com/blog/2025/nvidia-graphics-cards-work-on-pi-5-and-rockchip\n - Use Intel GPUs on Pi: https://www.jeffgeerling.com/blog/2025/all-intel-gpus-run-on-raspberry-pi-and-risc-v\n\neGPU Setup (some links are affiliate links):\n\n - Minisforum DEG1 eGPU Dock: https://amzn.to/4s3gUz6\n - Micro SATA Cables Oculink to M.2 adapter: https://amzn.to/49dKKcE\n - Super Flower 850W PSU: https://www.microcenter.com/product/684393/super-flower-leadex-iii-gold-up-850-watt-80-plus-gold-atx-fully-modular-power-supply-atx-31-compatible\n - AMD Radeon AI Pro R9700: https://www.microcenter.com/product/702853/xfx-amd-radeon-ai-pro-r9700-single-fan-32gb-gddr6-pcie-50-graphics-card\n\nDual GPU Setup (some links are affiliate links):\n\n - chenyang PCIe 4.0 M.2 NGFF to SFF-8643: https://amzn.to/4pyqSqt\n - 10Gtek SFF-8644 to SFF-8643 Cable: https://amzn.to/3MKNbup\n - Dolphin PCIe HBA MXH932: https://dolphinics.com/products/MXH932.html\n - Dolphin 3 slot PCIe Backplane: https://dolphinics.com/products/IBP-G4X16-3.html\n\nHUGE thanks to Patrick from @ServeTheHomeVideo for helping me record at Micro Center in Phoenix :)\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Pi vs PC\n00:53 - Enough for Jellyfin? Local LLMs?\n01:50 - 4 GPUs 1 Pi\n02:16 - Comparing costs and energy use\n03:07 - Gaming on haitus (for now)\n03:39 - The setups\n04:56 - ffmpeg and Jellyfin media transcoding\n07:31 - 3D rendering with GravityMark\n08:39 - LLMs on AMD\n09:36 - LLMs on Nvidia\n12:27 - Drivers, Vulkan, and CUDA\n13:06 - Dual GPU - Setup\n15:24 - Sharing memory and PCIe ACS\n16:28 - llama.cpp performance - mixed Nvidia GPUs\n17:08 - 52GB of VRAM on AMD\n17:28 - Intel PC dual Nvidia GPU comparison\n17:56 - Who wins?", "2 GPUs 1 Pi", "1e4cce90-b7a3-4ee3-969e-66566ae8b344", "https://www.youtube.com/watch?v=8X2Y62JGDCo", "8X2Y62JGDCo", false, 1120, false, 2, "/downloads/JeffGeerling/2025-12-20 2 GPUs 1 Pi/2 GPUs 1 Pi [8X2Y62JGDCo].mkv", false, false, 7, [], 98, ~U[2025-12-20 15:00:24Z], ~U[2025-12-24 08:52:51Z], ~U[2025-12-24 08:52:51Z], "Shop Micro Center Holiday Deals: https://micro.center/e787eb\nCheck out Micro Center's Other Top Deals: https://micro.center/315b05\nShop Micro Center Bundles: https://micro.center/f7b037\nVisit Micro Center News: https://micro.center/9b77f2\n\nCan a Raspberry Pi match the performance of a modern desktop PC when it comes to GPU performance?\n\nOf course not, in a general sense. But there are specific use cases where you'd be surprised by how close the Pi comes, performance-wise. In some cases, the Pi is actually faster!\n\nResources I mentioned in this video:\n\n - AI Benchmark results and methodology: https://github.com/geerlingguy/ai-benchmarks\n - Multi-GPU benchmark results: https://github.com/geerlingguy/ai-benchmarks/issues/44\n - Use AMD GPUs on Pi: https://www.jeffgeerling.com/blog/2025/using-amd-gpus-on-raspberry-pi-without-recompiling-linux\n - Use Nvidia GPUs on Pi: https://www.jeffgeerling.com/blog/2025/nvidia-graphics-cards-work-on-pi-5-and-rockchip\n - Use Intel GPUs on Pi: https://www.jeffgeerling.com/blog/2025/all-intel-gpus-run-on-raspberry-pi-and-risc-v\n\neGPU Setup (some links are affiliate links):\n\n - Minisforum DEG1 eGPU Dock: https://amzn.to/4s3gUz6\n - Micro SATA Cables Oculink to M.2 adapter: https://amzn.to/49dKKcE\n - Super Flower 850W PSU: https://www.microcenter.com/product/684393/super-flower-leadex-iii-gold-up-850-watt-80-plus-gold-atx-fully-modular-power-supply-atx-31-compatible\n - AMD Radeon AI Pro R9700: https://www.microcenter.com/product/702853/xfx-amd-radeon-ai-pro-r9700-single-fan-32gb-gddr6-pcie-50-graphics-card\n\nDual GPU Setup (some links are affiliate links):\n\n - chenyang PCIe 4.0 M.2 NGFF to SFF-8643: https://amzn.to/4pyqSqt\n - 10Gtek SFF-8644 to SFF-8643 Cable: https://amzn.to/3MKNbup\n - Dolphin PCIe HBA MXH932: https://dolphinics.com/products/MXH932.html\n - Dolphin 3 slot PCIe Backplane: https://dolphinics.com/products/IBP-G4X16-3.html\n\nHUGE thanks to Patrick from @ServeTheHomeVideo for helping me record at Micro Center in Phoenix :)\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Pi vs PC\n00:53 - Enough for Jellyfin? Local LLMs?\n01:50 - 4 GPUs 1 Pi\n02:16 - Comparing costs and energy use\n03:07 - Gaming on haitus (for now)\n03:39 - The setups\n04:56 - ffmpeg and Jellyfin media transcoding\n07:31 - 3D rendering with GravityMark\n08:39 - LLMs on AMD\n09:36 - LLMs on Nvidia\n12:27 - Drivers, Vulkan, and CUDA\n13:06 - Dual GPU - Setup\n15:24 - Sharing memory and PCIe ACS\n16:28 - llama.cpp performance - mixed Nvidia GPUs\n17:08 - 52GB of VRAM on AMD\n17:28 - Intel PC dual Nvidia GPU comparison\n17:56 - Who wins?", "2 GPUs 1 Pi", "https://www.youtube.com/watch?v=8X2Y62JGDCo", "8X2Y62JGDCo", 1120, false, "/downloads/JeffGeerling/2025-12-20 2 GPUs 1 Pi/2 GPUs 1 Pi [8X2Y62JGDCo].mkv", false, 7, ~U[2025-12-20 15:00:24Z]] 08:52:51.091 [debug] QUERY OK source="sources" db=0.2ms idle=44.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] 08:52:51.092 [debug] QUERY OK source="media_profiles" db=0.3ms idle=3.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:52:51.092 [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 [28489] 08:52:51.092 [debug] Current batch of media processed. Will check again in 1000ms 08:52:51.850 [info] {"source":"oban","duration":1268,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:52:52.093 [debug] Current batch of media processed. Will check again in 1000ms 08:52:53.095 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "RDMA over Thunderbolt support landed in macOS 26.2.\n\nIs it good for HPC? For Exo and LLMs? Find out in this video.\n\nResources (some links are affiliate links):\n\n - Mac Studio: https://www.apple.com/mac-studio/\n - Exo 1.0: https://exolabs.net\n - Apple MLX PR for Thunderbolt RDMA: https://github.com/ml-explore/mlx/pull/2808\n - M5 Neural Accelerator speedup: https://machinelearning.apple.com/research/exploring-llms-mlx-m5\n - DeskPi Rackmate TL1: https://amzn.to/4p5ek94\n - Tupavco mini-rack PDU: https://amzn.to/4j0DpAq\n\nDisclaimer: The Mac Studios used in this cluster are on loan from Apple for testing. They are not sponsoring this video, nor had any say in the contents. DeskPi sent the Rackmate TL1 used in the video for my testing, but they also had no say in the video contents. I always add the \"sponsored\" flag on my videos if I did not purchase the equipment being shown.\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - A rack-full of Macs\n02:01 - Putting together a cluster\n03:16 - The downsides of Thunderbolt\n05:09 - One is enough\n07:45 - Managing macOS in a cluster (vs Linux)\n08:37 - HPL and llama.cpp cluster performance\n09:30 - Enabling RDMA\n09:51 - Massive LLMs\n11:34 - RDMA over TB5 is great... when it works\n12:10 - EXO community and OSS\n12:51 - Apple could go harder\n13:30 - Jack of all trades, not just AI", "duration" => 865, "filename" => "/downloads/JeffGeerling/2025-12-18 Apple didn't have to go this hard..#/Apple didn't have to go this hard... [x4_RsUxRjKU].mkv", "id" => "x4_RsUxRjKU", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=x4_RsUxRjKU", "playlist_index" => 3, "timestamp" => 1766066507, "title" => "Apple didn't have to go this hard...", "upload_date" => "20251218"} 08:52:53.095 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1047.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 08:52:53.096 [debug] QUERY OK source="sources" db=0.1ms idle=651.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] 08:52:53.096 [debug] QUERY OK source="media_items" db=0.6ms idle=651.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-18 14:01:47Z], 7] 08:52:53.100 [debug] QUERY OK source="media_items" db=2.9ms idle=652.3ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["RDMA over Thunderbolt support landed in macOS 26.2.\n\nIs it good for HPC? For Exo and LLMs? Find out in this video.\n\nResources (some links are affiliate links):\n\n - Mac Studio: https://www.apple.com/mac-studio/\n - Exo 1.0: https://exolabs.net\n - Apple MLX PR for Thunderbolt RDMA: https://github.com/ml-explore/mlx/pull/2808\n - M5 Neural Accelerator speedup: https://machinelearning.apple.com/research/exploring-llms-mlx-m5\n - DeskPi Rackmate TL1: https://amzn.to/4p5ek94\n - Tupavco mini-rack PDU: https://amzn.to/4j0DpAq\n\nDisclaimer: The Mac Studios used in this cluster are on loan from Apple for testing. They are not sponsoring this video, nor had any say in the contents. DeskPi sent the Rackmate TL1 used in the video for my testing, but they also had no say in the video contents. I always add the \"sponsored\" flag on my videos if I did not purchase the equipment being shown.\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - A rack-full of Macs\n02:01 - Putting together a cluster\n03:16 - The downsides of Thunderbolt\n05:09 - One is enough\n07:45 - Managing macOS in a cluster (vs Linux)\n08:37 - HPL and llama.cpp cluster performance\n09:30 - Enabling RDMA\n09:51 - Massive LLMs\n11:34 - RDMA over TB5 is great... when it works\n12:10 - EXO community and OSS\n12:51 - Apple could go harder\n13:30 - Jack of all trades, not just AI", "Apple didn't have to go this hard...", "8c9d07a7-6825-40b5-bf52-f28889276979", "https://www.youtube.com/watch?v=x4_RsUxRjKU", "x4_RsUxRjKU", false, 865, false, 3, "/downloads/JeffGeerling/2025-12-18 Apple didn't have to go this hard..#/Apple didn't have to go this hard... [x4_RsUxRjKU].mkv", false, false, 7, [], 98, ~U[2025-12-18 14:01:47Z], ~U[2025-12-24 08:52:53Z], ~U[2025-12-24 08:52:53Z], "RDMA over Thunderbolt support landed in macOS 26.2.\n\nIs it good for HPC? For Exo and LLMs? Find out in this video.\n\nResources (some links are affiliate links):\n\n - Mac Studio: https://www.apple.com/mac-studio/\n - Exo 1.0: https://exolabs.net\n - Apple MLX PR for Thunderbolt RDMA: https://github.com/ml-explore/mlx/pull/2808\n - M5 Neural Accelerator speedup: https://machinelearning.apple.com/research/exploring-llms-mlx-m5\n - DeskPi Rackmate TL1: https://amzn.to/4p5ek94\n - Tupavco mini-rack PDU: https://amzn.to/4j0DpAq\n\nDisclaimer: The Mac Studios used in this cluster are on loan from Apple for testing. They are not sponsoring this video, nor had any say in the contents. DeskPi sent the Rackmate TL1 used in the video for my testing, but they also had no say in the video contents. I always add the \"sponsored\" flag on my videos if I did not purchase the equipment being shown.\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - A rack-full of Macs\n02:01 - Putting together a cluster\n03:16 - The downsides of Thunderbolt\n05:09 - One is enough\n07:45 - Managing macOS in a cluster (vs Linux)\n08:37 - HPL and llama.cpp cluster performance\n09:30 - Enabling RDMA\n09:51 - Massive LLMs\n11:34 - RDMA over TB5 is great... when it works\n12:10 - EXO community and OSS\n12:51 - Apple could go harder\n13:30 - Jack of all trades, not just AI", "Apple didn't have to go this hard...", "https://www.youtube.com/watch?v=x4_RsUxRjKU", "x4_RsUxRjKU", 865, false, "/downloads/JeffGeerling/2025-12-18 Apple didn't have to go this hard..#/Apple didn't have to go this hard... [x4_RsUxRjKU].mkv", false, 7, ~U[2025-12-18 14:01:47Z]] 08:52:53.100 [debug] QUERY OK source="sources" db=0.1ms idle=50.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 08:52:53.101 [debug] QUERY OK source="media_profiles" db=0.1ms queue=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] 08:52:53.101 [debug] QUERY OK source="media_items" db=0.1ms idle=5.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 [27933] 08:52:53.101 [debug] Current batch of media processed. Will check again in 1000ms 08:52:54.102 [debug] Current batch of media processed. Will check again in 1000ms 08:52:55.104 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Raspberry Pi launched the CM0... in China. Let's take a look at this little stamp-sized Pi.\n\nResources mentioned in this video:\n\n - My test data and discussion: https://github.com/geerlingguy/sbc-reviews/issues/98\n - ED-CM0NANO from EDAtec: https://edatec.cn/docs/cm0nano/ds/\n - Raspberry Pi CM0 discussion on the Pi forum: https://forums.raspberrypi.com/viewtopic.php?t=386639\n - Order the ED-CM0NANO-10000 from DigiKey: https://www.digikey.com/en/products/detail/eda-technology-co-ltd/ED-CM0NANO-10000/28263891\n - Hackster article on CM0: https://www.hackster.io/news/raspberry-pi-unveils-the-18-compute-module-0-but-only-for-chinese-customers-for-now-913bf59ab6cc\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Castellated Computing\n01:01 - EDAtec's CM0NANO dev board\n01:34 - Flashing the CM0's slow eMMC\n02:02 - Chromium runs, but it's not for that\n02:42 - Why in China?", "duration" => 237, "filename" => "/downloads/JeffGeerling/2025-12-12 You can't buy this Raspberry Pi (except in China)/You can't buy this Raspberry Pi (except in China) [Q6FIcyhjoVo].mkv", "id" => "Q6FIcyhjoVo", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Q6FIcyhjoVo", "playlist_index" => 4, "timestamp" => 1765551658, "title" => "You can't buy this Raspberry Pi (except in China)", "upload_date" => "20251212"} 08:52:55.104 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=660.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:52:55.105 [debug] QUERY OK source="sources" db=0.1ms idle=660.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] 08:52:55.106 [debug] QUERY OK source="media_items" db=0.6ms idle=661.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-12 15:00:58Z], 7] 08:52:55.107 [debug] QUERY OK source="media_items" db=0.9ms idle=661.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Raspberry Pi launched the CM0... in China. Let's take a look at this little stamp-sized Pi.\n\nResources mentioned in this video:\n\n - My test data and discussion: https://github.com/geerlingguy/sbc-reviews/issues/98\n - ED-CM0NANO from EDAtec: https://edatec.cn/docs/cm0nano/ds/\n - Raspberry Pi CM0 discussion on the Pi forum: https://forums.raspberrypi.com/viewtopic.php?t=386639\n - Order the ED-CM0NANO-10000 from DigiKey: https://www.digikey.com/en/products/detail/eda-technology-co-ltd/ED-CM0NANO-10000/28263891\n - Hackster article on CM0: https://www.hackster.io/news/raspberry-pi-unveils-the-18-compute-module-0-but-only-for-chinese-customers-for-now-913bf59ab6cc\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Castellated Computing\n01:01 - EDAtec's CM0NANO dev board\n01:34 - Flashing the CM0's slow eMMC\n02:02 - Chromium runs, but it's not for that\n02:42 - Why in China?", "You can't buy this Raspberry Pi (except in China)", "9fbc72a9-1d51-4aad-86db-e92d3170262a", "https://www.youtube.com/watch?v=Q6FIcyhjoVo", "Q6FIcyhjoVo", false, 237, false, 4, "/downloads/JeffGeerling/2025-12-12 You can't buy this Raspberry Pi (except in China)/You can't buy this Raspberry Pi (except in China) [Q6FIcyhjoVo].mkv", false, false, 7, [], 98, ~U[2025-12-12 15:00:58Z], ~U[2025-12-24 08:52:55Z], ~U[2025-12-24 08:52:55Z], "Raspberry Pi launched the CM0... in China. Let's take a look at this little stamp-sized Pi.\n\nResources mentioned in this video:\n\n - My test data and discussion: https://github.com/geerlingguy/sbc-reviews/issues/98\n - ED-CM0NANO from EDAtec: https://edatec.cn/docs/cm0nano/ds/\n - Raspberry Pi CM0 discussion on the Pi forum: https://forums.raspberrypi.com/viewtopic.php?t=386639\n - Order the ED-CM0NANO-10000 from DigiKey: https://www.digikey.com/en/products/detail/eda-technology-co-ltd/ED-CM0NANO-10000/28263891\n - Hackster article on CM0: https://www.hackster.io/news/raspberry-pi-unveils-the-18-compute-module-0-but-only-for-chinese-customers-for-now-913bf59ab6cc\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Castellated Computing\n01:01 - EDAtec's CM0NANO dev board\n01:34 - Flashing the CM0's slow eMMC\n02:02 - Chromium runs, but it's not for that\n02:42 - Why in China?", "You can't buy this Raspberry Pi (except in China)", "https://www.youtube.com/watch?v=Q6FIcyhjoVo", "Q6FIcyhjoVo", 237, false, "/downloads/JeffGeerling/2025-12-12 You can't buy this Raspberry Pi (except in China)/You can't buy this Raspberry Pi (except in China) [Q6FIcyhjoVo].mkv", false, 7, ~U[2025-12-12 15:00:58Z]] 08:52:55.108 [debug] QUERY OK source="sources" db=0.2ms idle=53.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 08:52:55.108 [debug] QUERY OK source="media_profiles" db=0.2ms 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] 08:52:55.109 [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 [26272] 08:52:55.109 [debug] Current batch of media processed. Will check again in 1000ms 08:52:56.110 [debug] Current batch of media processed. Will check again in 1000ms 08:52:57.111 [debug] Current batch of media processed. Will check again in 1000ms 08:52:58.112 [debug] Current batch of media processed. Will check again in 1000ms 08:52:59.113 [debug] Current batch of media processed. Will check again in 1000ms 08:53:00.114 [debug] Current batch of media processed. Will check again in 1000ms 08:53:00.899 [info] {"source":"oban","duration":536,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:53:01.115 [debug] Current batch of media processed. Will check again in 1000ms 08:53:02.116 [debug] Current batch of media processed. Will check again in 1000ms 08:53:03.118 [debug] Current batch of media processed. Will check again in 1000ms 08:53:04.120 [debug] Current batch of media processed. Will check again in 1000ms 08:53:05.121 [debug] Current batch of media processed. Will check again in 1000ms 08:53:06.122 [debug] Current batch of media processed. Will check again in 1000ms 08:53:07.123 [debug] Current batch of media processed. Will check again in 1000ms 08:53:08.124 [debug] Current batch of media processed. Will check again in 1000ms 08:53:09.125 [debug] Current batch of media processed. Will check again in 1000ms 08:53:10.126 [debug] Current batch of media processed. Will check again in 1000ms 08:53:11.127 [debug] Current batch of media processed. Will check again in 1000ms 08:53:12.128 [debug] Current batch of media processed. Will check again in 1000ms 08:53:13.129 [debug] Current batch of media processed. Will check again in 1000ms 08:53:14.130 [debug] Current batch of media processed. Will check again in 1000ms 08:53:15.131 [debug] Current batch of media processed. Will check again in 1000ms 08:53:16.132 [debug] Current batch of media processed. Will check again in 1000ms 08:53:17.134 [debug] Current batch of media processed. Will check again in 1000ms 08:53:18.135 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "It's a Framework 13, but there's no ordinary CPU inside...\n\nResources I mentioned in this video:\n\n - DeepComputing DC-ROMA II: https://store.deepcomputing.io/products/dc-roma-ai-pc-risc-v-mainboard-ii-for-framework-laptop-13\n - All my benchmarking data: https://github.com/geerlingguy/sbc-reviews/issues/82\n - Framework 13 with AMD Ryzen AI 5 340: https://frame.work/laptop13\n - SemiTO-V RP2350 GPIO Expansion Module: https://github.com/semitov/rp2350-gpio-card\n - SemiTO-V MCL Python to MicroPython tool: https://github.com/semitov/SemiTOV-MCL\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - This is not a Framework\n01:49 - Hardware\n04:02 - Strange architecture, seen before\n04:44 - RISC-V in a strange place right now\n05:28 - How is it as a laptop?\n07:18 - NPU and a missing 16 GB of RAM\n08:12 - Benchmarks\n09:20 - Why so inefficient?\n10:19 - A trip back to 2009\n11:49 - It's a Framework though\n12:23 - Upgrading to AMD\n13:04 - 6 cores demolishes 8 cores\n13:57 - Adding 2 more RISC-V cores (via expansion module)\n14:57 - Final thoughts", "duration" => 927, "filename" => "/downloads/JeffGeerling/2025-12-08 This is not a Framework Laptop/This is not a Framework Laptop [OkFfTK8S00c].mkv", "id" => "OkFfTK8S00c", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=OkFfTK8S00c", "playlist_index" => 5, "timestamp" => 1765206052, "title" => "This is not a Framework Laptop", "upload_date" => "20251208"} 08:53:18.136 [debug] QUERY OK source="sources" db=0.2ms idle=1691.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] 08:53:18.136 [debug] QUERY OK source="sources" db=0.2ms idle=1691.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:53:18.137 [debug] QUERY OK source="media_items" db=0.6ms idle=1692.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-08 15:00:52Z], 7] 08:53:18.138 [debug] QUERY OK source="media_items" db=0.8ms idle=1037.2ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["It's a Framework 13, but there's no ordinary CPU inside...\n\nResources I mentioned in this video:\n\n - DeepComputing DC-ROMA II: https://store.deepcomputing.io/products/dc-roma-ai-pc-risc-v-mainboard-ii-for-framework-laptop-13\n - All my benchmarking data: https://github.com/geerlingguy/sbc-reviews/issues/82\n - Framework 13 with AMD Ryzen AI 5 340: https://frame.work/laptop13\n - SemiTO-V RP2350 GPIO Expansion Module: https://github.com/semitov/rp2350-gpio-card\n - SemiTO-V MCL Python to MicroPython tool: https://github.com/semitov/SemiTOV-MCL\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - This is not a Framework\n01:49 - Hardware\n04:02 - Strange architecture, seen before\n04:44 - RISC-V in a strange place right now\n05:28 - How is it as a laptop?\n07:18 - NPU and a missing 16 GB of RAM\n08:12 - Benchmarks\n09:20 - Why so inefficient?\n10:19 - A trip back to 2009\n11:49 - It's a Framework though\n12:23 - Upgrading to AMD\n13:04 - 6 cores demolishes 8 cores\n13:57 - Adding 2 more RISC-V cores (via expansion module)\n14:57 - Final thoughts", "This is not a Framework Laptop", "6d07a7ab-c126-47d1-b64f-70659c025236", "https://www.youtube.com/watch?v=OkFfTK8S00c", "OkFfTK8S00c", false, 927, false, 5, "/downloads/JeffGeerling/2025-12-08 This is not a Framework Laptop/This is not a Framework Laptop [OkFfTK8S00c].mkv", false, false, 7, [], 98, ~U[2025-12-08 15:00:52Z], ~U[2025-12-24 08:53:18Z], ~U[2025-12-24 08:53:18Z], "It's a Framework 13, but there's no ordinary CPU inside...\n\nResources I mentioned in this video:\n\n - DeepComputing DC-ROMA II: https://store.deepcomputing.io/products/dc-roma-ai-pc-risc-v-mainboard-ii-for-framework-laptop-13\n - All my benchmarking data: https://github.com/geerlingguy/sbc-reviews/issues/82\n - Framework 13 with AMD Ryzen AI 5 340: https://frame.work/laptop13\n - SemiTO-V RP2350 GPIO Expansion Module: https://github.com/semitov/rp2350-gpio-card\n - SemiTO-V MCL Python to MicroPython tool: https://github.com/semitov/SemiTOV-MCL\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - This is not a Framework\n01:49 - Hardware\n04:02 - Strange architecture, seen before\n04:44 - RISC-V in a strange place right now\n05:28 - How is it as a laptop?\n07:18 - NPU and a missing 16 GB of RAM\n08:12 - Benchmarks\n09:20 - Why so inefficient?\n10:19 - A trip back to 2009\n11:49 - It's a Framework though\n12:23 - Upgrading to AMD\n13:04 - 6 cores demolishes 8 cores\n13:57 - Adding 2 more RISC-V cores (via expansion module)\n14:57 - Final thoughts", "This is not a Framework Laptop", "https://www.youtube.com/watch?v=OkFfTK8S00c", "OkFfTK8S00c", 927, false, "/downloads/JeffGeerling/2025-12-08 This is not a Framework Laptop/This is not a Framework Laptop [OkFfTK8S00c].mkv", false, 7, ~U[2025-12-08 15:00:52Z]] 08:53:18.139 [debug] QUERY OK source="sources" db=0.1ms idle=36.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] 08:53:18.139 [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] 08:53:18.140 [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 [25154] 08:53:18.140 [debug] Current batch of media processed. Will check again in 1000ms 08:53:19.141 [debug] Current batch of media processed. Will check again in 1000ms 08:53:20.142 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Some of the articles and posts I referenced:\n\n - TeamGroup 64GB DDR5 Memory Kit I bought for $209.99 is now $649.99: https://www.microcenter.com/product/680461/teamgroup-t-create-expert-64gb-(2-x-32gb)-ddr5-6400-pc5-51200-cl34-dual-channel-desktop-memory-kit-ctced564g6400hc34bdc01-black\n - PC Part Picker Memory Pricing Trends: https://pcpartpicker.com/trends/price/memory/\n - Samsung can't buy Samsung memory: https://www.pcworld.com/article/2998935/ram-is-so-expensive-samsung-wont-even-sell-it-to-samsung.html\n - Micron stops selling Crucial memory and NVMes: https://investors.micron.com/news-releases/news-release-details/micron-announces-exit-crucial-consumer-business\n - Libre Computer's quote for LPDDR4 4GB RAM increasing beyond entire board BoM: https://x.com/librecomputer/status/1995592912063922578\n - Lenovo Stockpiles RAM for Laptops: https://www.pcworld.com/article/2986266/lenovo-stockpiles-ram-to-hopefully-keep-laptop-prices-down.html\n - Raspberry Pi memory-driven price rises: https://www.raspberrypi.com/news/1gb-raspberry-pi-5-now-available-at-45-and-memory-driven-price-rises/\n - Mono's future production runs impacted by LPDDR4 memory pricing: https://www.youtube.com/watch?v=AyueVGLT7qI\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff", "duration" => 270, "filename" => "/downloads/JeffGeerling/2025-12-04 The RAM Shortage Comes for Us All/The RAM Shortage Comes for Us All [9rbz0akyLyQ].mkv", "id" => "9rbz0akyLyQ", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=9rbz0akyLyQ", "playlist_index" => 6, "timestamp" => 1764873778, "title" => "The RAM Shortage Comes for Us All", "upload_date" => "20251204"} 08:53:20.143 [debug] QUERY OK source="sources" db=0.2ms idle=698.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:53:20.143 [debug] QUERY OK source="sources" db=0.2ms idle=698.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] 08:53:20.144 [debug] QUERY OK source="media_items" db=0.6ms idle=698.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-04 18:42:58Z], 7] 08:53:20.146 [debug] QUERY OK source="media_items" db=1.0ms idle=699.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Some of the articles and posts I referenced:\n\n - TeamGroup 64GB DDR5 Memory Kit I bought for $209.99 is now $649.99: https://www.microcenter.com/product/680461/teamgroup-t-create-expert-64gb-(2-x-32gb)-ddr5-6400-pc5-51200-cl34-dual-channel-desktop-memory-kit-ctced564g6400hc34bdc01-black\n - PC Part Picker Memory Pricing Trends: https://pcpartpicker.com/trends/price/memory/\n - Samsung can't buy Samsung memory: https://www.pcworld.com/article/2998935/ram-is-so-expensive-samsung-wont-even-sell-it-to-samsung.html\n - Micron stops selling Crucial memory and NVMes: https://investors.micron.com/news-releases/news-release-details/micron-announces-exit-crucial-consumer-business\n - Libre Computer's quote for LPDDR4 4GB RAM increasing beyond entire board BoM: https://x.com/librecomputer/status/1995592912063922578\n - Lenovo Stockpiles RAM for Laptops: https://www.pcworld.com/article/2986266/lenovo-stockpiles-ram-to-hopefully-keep-laptop-prices-down.html\n - Raspberry Pi memory-driven price rises: https://www.raspberrypi.com/news/1gb-raspberry-pi-5-now-available-at-45-and-memory-driven-price-rises/\n - Mono's future production runs impacted by LPDDR4 memory pricing: https://www.youtube.com/watch?v=AyueVGLT7qI\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff", "The RAM Shortage Comes for Us All", "f9dd3ac8-74a3-41ee-9935-f036cb2eca6d", "https://www.youtube.com/watch?v=9rbz0akyLyQ", "9rbz0akyLyQ", false, 270, false, 6, "/downloads/JeffGeerling/2025-12-04 The RAM Shortage Comes for Us All/The RAM Shortage Comes for Us All [9rbz0akyLyQ].mkv", false, false, 7, [], 98, ~U[2025-12-04 18:42:58Z], ~U[2025-12-24 08:53:20Z], ~U[2025-12-24 08:53:20Z], "Some of the articles and posts I referenced:\n\n - TeamGroup 64GB DDR5 Memory Kit I bought for $209.99 is now $649.99: https://www.microcenter.com/product/680461/teamgroup-t-create-expert-64gb-(2-x-32gb)-ddr5-6400-pc5-51200-cl34-dual-channel-desktop-memory-kit-ctced564g6400hc34bdc01-black\n - PC Part Picker Memory Pricing Trends: https://pcpartpicker.com/trends/price/memory/\n - Samsung can't buy Samsung memory: https://www.pcworld.com/article/2998935/ram-is-so-expensive-samsung-wont-even-sell-it-to-samsung.html\n - Micron stops selling Crucial memory and NVMes: https://investors.micron.com/news-releases/news-release-details/micron-announces-exit-crucial-consumer-business\n - Libre Computer's quote for LPDDR4 4GB RAM increasing beyond entire board BoM: https://x.com/librecomputer/status/1995592912063922578\n - Lenovo Stockpiles RAM for Laptops: https://www.pcworld.com/article/2986266/lenovo-stockpiles-ram-to-hopefully-keep-laptop-prices-down.html\n - Raspberry Pi memory-driven price rises: https://www.raspberrypi.com/news/1gb-raspberry-pi-5-now-available-at-45-and-memory-driven-price-rises/\n - Mono's future production runs impacted by LPDDR4 memory pricing: https://www.youtube.com/watch?v=AyueVGLT7qI\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff", "The RAM Shortage Comes for Us All", "https://www.youtube.com/watch?v=9rbz0akyLyQ", "9rbz0akyLyQ", 270, false, "/downloads/JeffGeerling/2025-12-04 The RAM Shortage Comes for Us All/The RAM Shortage Comes for Us All [9rbz0akyLyQ].mkv", false, 7, ~U[2025-12-04 18:42:58Z]] 08:53:20.146 [debug] QUERY OK source="sources" db=0.2ms idle=38.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 08:53:20.146 [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] 08:53:20.147 [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 [23293] 08:53:20.147 [debug] Current batch of media processed. Will check again in 1000ms 08:53:21.148 [debug] Current batch of media processed. Will check again in 1000ms 08:53:21.853 [info] {"source":"oban","duration":1695,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:53:22.150 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "It finally works!\n\nBlog post with all the details (and how you can try it): https://www.jeffgeerling.com/blog/2025/nvidia-graphics-cards-work-on-pi-5-and-rockchip\n\nAnd here's the open driver PR I mentioned in the video: https://github.com/NVIDIA/open-gpu-kernel-modules/pull/972\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff", "duration" => 348, "filename" => "/downloads/JeffGeerling/2025-11-26 Nvidia GPU on Raspberry Pi—it WORKS!/Nvidia GPU on Raspberry Pi—it WORKS! [SPTYjF8qH0A].mkv", "id" => "SPTYjF8qH0A", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=SPTYjF8qH0A", "playlist_index" => 7, "timestamp" => 1764200717, "title" => "Nvidia GPU on Raspberry Pi—it WORKS!", "upload_date" => "20251126"} 08:53:22.150 [debug] QUERY OK source="sources" db=0.2ms idle=705.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:53:22.151 [debug] QUERY OK source="sources" db=0.1ms idle=706.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:53:22.152 [debug] QUERY OK source="media_items" db=0.6ms idle=706.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-26 23:45:17Z], 7] 08:53:22.153 [debug] QUERY OK source="media_items" db=0.7ms idle=298.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["It finally works!\n\nBlog post with all the details (and how you can try it): https://www.jeffgeerling.com/blog/2025/nvidia-graphics-cards-work-on-pi-5-and-rockchip\n\nAnd here's the open driver PR I mentioned in the video: https://github.com/NVIDIA/open-gpu-kernel-modules/pull/972\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff", "Nvidia GPU on Raspberry Pi—it WORKS!", "61a1f844-a4c3-4eba-98ec-a8c8029b31e2", "https://www.youtube.com/watch?v=SPTYjF8qH0A", "SPTYjF8qH0A", false, 348, false, 7, "/downloads/JeffGeerling/2025-11-26 Nvidia GPU on Raspberry Pi—it WORKS!/Nvidia GPU on Raspberry Pi—it WORKS! [SPTYjF8qH0A].mkv", false, false, 7, [], 98, ~U[2025-11-26 23:45:17Z], ~U[2025-12-24 08:53:22Z], ~U[2025-12-24 08:53:22Z], "It finally works!\n\nBlog post with all the details (and how you can try it): https://www.jeffgeerling.com/blog/2025/nvidia-graphics-cards-work-on-pi-5-and-rockchip\n\nAnd here's the open driver PR I mentioned in the video: https://github.com/NVIDIA/open-gpu-kernel-modules/pull/972\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff", "Nvidia GPU on Raspberry Pi—it WORKS!", "https://www.youtube.com/watch?v=SPTYjF8qH0A", "SPTYjF8qH0A", 348, false, "/downloads/JeffGeerling/2025-11-26 Nvidia GPU on Raspberry Pi—it WORKS!/Nvidia GPU on Raspberry Pi—it WORKS! [SPTYjF8qH0A].mkv", false, 7, ~U[2025-11-26 23:45:17Z]] 08:53:22.153 [debug] QUERY OK source="sources" db=0.1ms idle=41.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 08:53:22.153 [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] 08:53:22.154 [debug] QUERY OK source="media_items" db=0.3ms 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 [21785] 08:53:22.154 [debug] Current batch of media processed. Will check again in 1000ms 08:53:23.155 [debug] Current batch of media processed. Will check again in 1000ms 08:53:24.157 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "It's a neat, portable Air Quality monitor, full of personality.\n\nBut is it worth $250?\n\nLinks to things I referenced in the video (some links are affiliate links):\n\n - Air Lab: https://networkedartifacts.com/airlab/\n - AirGradient One: https://www.airgradient.com/indoor/\n - Temtop M2000C 2nd Generation: https://amzn.to/3XGbpbs\n - CO2 study referenced in the video: https://pubmed.ncbi.nlm.nih.gov/23008272/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - A $250 portable air quality monitor\n01:14 - Versus AirGradient ONE\n02:06 - Setting up an AirGradient with Home Assistant\n05:36 - Setting up the Air Lab\n07:24 - Air Lab Console walkthrough\n11:28 - Stale air on a road trip\n13:02 - Air quality at an indoor convention\n13:40 - Battery life, Home Assistant integration\n14:05 - DIY or Buy\n15:18 - Bonus, the Temtop", "duration" => 978, "filename" => "/downloads/JeffGeerling/2025-11-21 Are you sure that's air you're breathing?/Are you sure that's air you're breathing? [r21lvaw40nY].mkv", "id" => "r21lvaw40nY", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=r21lvaw40nY", "playlist_index" => 8, "timestamp" => 1763737307, "title" => "Are you sure that's air you're breathing?", "upload_date" => "20251121"} 08:53:24.157 [debug] QUERY OK source="sources" db=0.3ms idle=712.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:53:24.158 [debug] QUERY OK source="sources" db=0.3ms idle=713.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:53:24.159 [debug] QUERY OK source="media_items" db=0.6ms idle=713.9ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-21 15:01:47Z], 7] 08:53:24.161 [debug] QUERY OK source="media_items" db=1.5ms idle=714.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["It's a neat, portable Air Quality monitor, full of personality.\n\nBut is it worth $250?\n\nLinks to things I referenced in the video (some links are affiliate links):\n\n - Air Lab: https://networkedartifacts.com/airlab/\n - AirGradient One: https://www.airgradient.com/indoor/\n - Temtop M2000C 2nd Generation: https://amzn.to/3XGbpbs\n - CO2 study referenced in the video: https://pubmed.ncbi.nlm.nih.gov/23008272/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - A $250 portable air quality monitor\n01:14 - Versus AirGradient ONE\n02:06 - Setting up an AirGradient with Home Assistant\n05:36 - Setting up the Air Lab\n07:24 - Air Lab Console walkthrough\n11:28 - Stale air on a road trip\n13:02 - Air quality at an indoor convention\n13:40 - Battery life, Home Assistant integration\n14:05 - DIY or Buy\n15:18 - Bonus, the Temtop", "Are you sure that's air you're breathing?", "dcf6cfa4-a6a1-4b85-beb7-002e199b97d8", "https://www.youtube.com/watch?v=r21lvaw40nY", "r21lvaw40nY", false, 978, false, 8, "/downloads/JeffGeerling/2025-11-21 Are you sure that's air you're breathing?/Are you sure that's air you're breathing? [r21lvaw40nY].mkv", false, false, 7, [], 98, ~U[2025-11-21 15:01:47Z], ~U[2025-12-24 08:53:24Z], ~U[2025-12-24 08:53:24Z], "It's a neat, portable Air Quality monitor, full of personality.\n\nBut is it worth $250?\n\nLinks to things I referenced in the video (some links are affiliate links):\n\n - Air Lab: https://networkedartifacts.com/airlab/\n - AirGradient One: https://www.airgradient.com/indoor/\n - Temtop M2000C 2nd Generation: https://amzn.to/3XGbpbs\n - CO2 study referenced in the video: https://pubmed.ncbi.nlm.nih.gov/23008272/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - A $250 portable air quality monitor\n01:14 - Versus AirGradient ONE\n02:06 - Setting up an AirGradient with Home Assistant\n05:36 - Setting up the Air Lab\n07:24 - Air Lab Console walkthrough\n11:28 - Stale air on a road trip\n13:02 - Air quality at an indoor convention\n13:40 - Battery life, Home Assistant integration\n14:05 - DIY or Buy\n15:18 - Bonus, the Temtop", "Are you sure that's air you're breathing?", "https://www.youtube.com/watch?v=r21lvaw40nY", "r21lvaw40nY", 978, false, "/downloads/JeffGeerling/2025-11-21 Are you sure that's air you're breathing?/Are you sure that's air you're breathing? [r21lvaw40nY].mkv", false, 7, ~U[2025-11-21 15:01:47Z]] 08:53:24.161 [debug] QUERY OK source="sources" db=0.1ms idle=46.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 08:53:24.162 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=4.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:53:24.162 [debug] QUERY OK source="media_items" db=0.2ms idle=4.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 [20841] 08:53:24.163 [debug] Current batch of media processed. Will check again in 1000ms 08:53:25.163 [debug] Current batch of media processed. Will check again in 1000ms 08:53:26.164 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "And you don't even have to recompile the Linux kernel!\n\nI purchased almost everything shown in this video, however, the Intel Arc Pro B50 was provided for testing by Intel, thus I'm marking this video as 'sponsored'. They did not pay me outside of providing the B50, nor did they have any say in the video's contents.\n\nThings mentioned in this video (some links are affiliate links):\n\n - Blog post with the latest guide for setup: https://www.jeffgeerling.com/blog/2025/all-intel-gpus-run-on-raspberry-pi-and-risc-v\n - Blog post on Resizeable BAR support: https://www.jeffgeerling.com/blog/2025/resizeable-bar-support-on-raspberry-pi\n - Minisforum DEG1 eGPU Dock: https://amzn.to/481EHao\n - JMT eGPU Dock: https://amzn.to/4oUZ4M9\n - chenyang OCuLink cable: https://amzn.to/47ZxWWF\n - Micro SATA Cables OCuLink to M.2 adapter with ReDriver: https://amzn.to/4nTtJse\n - Lian-Li 750W SFX PSU: https://amzn.to/3JG3Myv\n - Linux Kernel Mailing List patch for Intel on non-x86: https://lore.kernel.org/lkml/20250715061837.2144388-1-zhangzhijie@bosc.ac.cn/\n - Raspberry Pi OS Kernel PR for AMD and Intel GPUs: https://github.com/raspberrypi/linux/pull/7113\n - Full testing and results using the latest patches: https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/764\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Every Intel GPU\n00:51 - Physical connections and overcoming PCIe issues\n01:38 - You don't need to recompile Linux anymore\n03:09 - Black Mesa (the curse of the blinking cursor)\n03:55 - Resizeable BAR support\n04:27 - Performance: Vulkan, OpenGL, llama.cpp AI models\n05:26 - Compared to AMD\n05:56 - Partnering with RISC-V to go mainline", "duration" => 410, "filename" => "/downloads/JeffGeerling/2025-11-13 Every Intel GPU runs on a Raspberry Pi/Every Intel GPU runs on a Raspberry Pi [ewDJpxQEGo4].mkv", "id" => "ewDJpxQEGo4", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=ewDJpxQEGo4", "playlist_index" => 9, "timestamp" => 1763046083, "title" => "Every Intel GPU runs on a Raspberry Pi", "upload_date" => "20251113"} 08:53:26.165 [debug] QUERY OK source="sources" db=0.2ms idle=720.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] 08:53:26.165 [debug] QUERY OK source="sources" db=0.1ms idle=720.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:53:26.166 [debug] QUERY OK source="media_items" db=0.6ms idle=721.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-13 15:01:23Z], 7] 08:53:26.167 [debug] QUERY OK source="media_items" db=1.0ms idle=722.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["And you don't even have to recompile the Linux kernel!\n\nI purchased almost everything shown in this video, however, the Intel Arc Pro B50 was provided for testing by Intel, thus I'm marking this video as 'sponsored'. They did not pay me outside of providing the B50, nor did they have any say in the video's contents.\n\nThings mentioned in this video (some links are affiliate links):\n\n - Blog post with the latest guide for setup: https://www.jeffgeerling.com/blog/2025/all-intel-gpus-run-on-raspberry-pi-and-risc-v\n - Blog post on Resizeable BAR support: https://www.jeffgeerling.com/blog/2025/resizeable-bar-support-on-raspberry-pi\n - Minisforum DEG1 eGPU Dock: https://amzn.to/481EHao\n - JMT eGPU Dock: https://amzn.to/4oUZ4M9\n - chenyang OCuLink cable: https://amzn.to/47ZxWWF\n - Micro SATA Cables OCuLink to M.2 adapter with ReDriver: https://amzn.to/4nTtJse\n - Lian-Li 750W SFX PSU: https://amzn.to/3JG3Myv\n - Linux Kernel Mailing List patch for Intel on non-x86: https://lore.kernel.org/lkml/20250715061837.2144388-1-zhangzhijie@bosc.ac.cn/\n - Raspberry Pi OS Kernel PR for AMD and Intel GPUs: https://github.com/raspberrypi/linux/pull/7113\n - Full testing and results using the latest patches: https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/764\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Every Intel GPU\n00:51 - Physical connections and overcoming PCIe issues\n01:38 - You don't need to recompile Linux anymore\n03:09 - Black Mesa (the curse of the blinking cursor)\n03:55 - Resizeable BAR support\n04:27 - Performance: Vulkan, OpenGL, llama.cpp AI models\n05:26 - Compared to AMD\n05:56 - Partnering with RISC-V to go mainline", "Every Intel GPU runs on a Raspberry Pi", "ddb771e7-ac95-490a-9f26-7927373beff1", "https://www.youtube.com/watch?v=ewDJpxQEGo4", "ewDJpxQEGo4", false, 410, false, 9, "/downloads/JeffGeerling/2025-11-13 Every Intel GPU runs on a Raspberry Pi/Every Intel GPU runs on a Raspberry Pi [ewDJpxQEGo4].mkv", false, false, 7, [], 98, ~U[2025-11-13 15:01:23Z], ~U[2025-12-24 08:53:26Z], ~U[2025-12-24 08:53:26Z], "And you don't even have to recompile the Linux kernel!\n\nI purchased almost everything shown in this video, however, the Intel Arc Pro B50 was provided for testing by Intel, thus I'm marking this video as 'sponsored'. They did not pay me outside of providing the B50, nor did they have any say in the video's contents.\n\nThings mentioned in this video (some links are affiliate links):\n\n - Blog post with the latest guide for setup: https://www.jeffgeerling.com/blog/2025/all-intel-gpus-run-on-raspberry-pi-and-risc-v\n - Blog post on Resizeable BAR support: https://www.jeffgeerling.com/blog/2025/resizeable-bar-support-on-raspberry-pi\n - Minisforum DEG1 eGPU Dock: https://amzn.to/481EHao\n - JMT eGPU Dock: https://amzn.to/4oUZ4M9\n - chenyang OCuLink cable: https://amzn.to/47ZxWWF\n - Micro SATA Cables OCuLink to M.2 adapter with ReDriver: https://amzn.to/4nTtJse\n - Lian-Li 750W SFX PSU: https://amzn.to/3JG3Myv\n - Linux Kernel Mailing List patch for Intel on non-x86: https://lore.kernel.org/lkml/20250715061837.2144388-1-zhangzhijie@bosc.ac.cn/\n - Raspberry Pi OS Kernel PR for AMD and Intel GPUs: https://github.com/raspberrypi/linux/pull/7113\n - Full testing and results using the latest patches: https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/764\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Every Intel GPU\n00:51 - Physical connections and overcoming PCIe issues\n01:38 - You don't need to recompile Linux anymore\n03:09 - Black Mesa (the curse of the blinking cursor)\n03:55 - Resizeable BAR support\n04:27 - Performance: Vulkan, OpenGL, llama.cpp AI models\n05:26 - Compared to AMD\n05:56 - Partnering with RISC-V to go mainline", "Every Intel GPU runs on a Raspberry Pi", "https://www.youtube.com/watch?v=ewDJpxQEGo4", "ewDJpxQEGo4", 410, false, "/downloads/JeffGeerling/2025-11-13 Every Intel GPU runs on a Raspberry Pi/Every Intel GPU runs on a Raspberry Pi [ewDJpxQEGo4].mkv", false, 7, ~U[2025-11-13 15:01:23Z]] 08:53:26.168 [debug] QUERY OK source="sources" db=0.1ms idle=48.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 08:53:26.168 [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] 08:53:26.169 [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 [19339] 08:53:26.169 [debug] Current batch of media processed. Will check again in 1000ms 08:53:27.170 [debug] Current batch of media processed. Will check again in 1000ms 08:53:28.172 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Minisforum just launched the MS-R1, their first Arm workstation PC.\n\nWill it bring Arm into the homelab, in a big way? Or will it suffer the same fate as the Radxa Orion O6, let down by a power-hungry SoC? And will a dedicated GPU fit inside this tiny box?\n\nThings mentioned in this video (amzn.to links are affiliate links):\n\n - Minisforum MS-R1: https://s.minisforum.com/4hRFZbj\n - MS-R1 benchmarks and test data: https://github.com/geerlingguy/sbc-reviews/issues/89\n - Radxa Orion O6 review: https://www.youtube.com/watch?v=OMnCqmM-WKo\n - Abovetop Nvidia RTX A2000 SFF GPU: https://www.newegg.com/abovetop-Model-A2000laptop/p/1DW-00MF-00001\n - Intel Arc A310 ECO GPU: https://amzn.to/49Q3vn4\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Hardware overview\n01:47 - Cix's 12-core Arm SoC\n02:57 - Deeper problems\n03:55 - 10 Gbps Networking and AI inference\n04:55 - Installing a dGPU (RTX A2000)\n06:15 - A BIOS detour and AC Power Loss bug\n06:50 - Trying an Intel GPU (A310 ECO)\n07:20 - Installing Ubuntu and getting GPU acceleration\n08:40 - Arm Homelab in a box?", "duration" => 601, "filename" => "/downloads/JeffGeerling/2025-11-10 Arm Homelab-in-a-Box – Minisforum MS-R1/Arm Homelab-in-a-Box – Minisforum MS-R1 [WXfd0rOOtkg].mkv", "id" => "WXfd0rOOtkg", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=WXfd0rOOtkg", "playlist_index" => 10, "timestamp" => 1762790453, "title" => "Arm Homelab-in-a-Box – Minisforum MS-R1", "upload_date" => "20251110"} 08:53:28.173 [debug] QUERY OK source="sources" db=0.1ms queue=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" FROM "sources" AS s0 WHERE (s0."id" IN (?)) [7] 08:53:28.173 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=728.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] 08:53:28.174 [debug] QUERY OK source="media_items" db=0.5ms idle=729.1ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-11-10 16:00:53Z], 7] 08:53:28.175 [debug] QUERY OK source="media_items" db=0.9ms idle=730.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Minisforum just launched the MS-R1, their first Arm workstation PC.\n\nWill it bring Arm into the homelab, in a big way? Or will it suffer the same fate as the Radxa Orion O6, let down by a power-hungry SoC? And will a dedicated GPU fit inside this tiny box?\n\nThings mentioned in this video (amzn.to links are affiliate links):\n\n - Minisforum MS-R1: https://s.minisforum.com/4hRFZbj\n - MS-R1 benchmarks and test data: https://github.com/geerlingguy/sbc-reviews/issues/89\n - Radxa Orion O6 review: https://www.youtube.com/watch?v=OMnCqmM-WKo\n - Abovetop Nvidia RTX A2000 SFF GPU: https://www.newegg.com/abovetop-Model-A2000laptop/p/1DW-00MF-00001\n - Intel Arc A310 ECO GPU: https://amzn.to/49Q3vn4\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Hardware overview\n01:47 - Cix's 12-core Arm SoC\n02:57 - Deeper problems\n03:55 - 10 Gbps Networking and AI inference\n04:55 - Installing a dGPU (RTX A2000)\n06:15 - A BIOS detour and AC Power Loss bug\n06:50 - Trying an Intel GPU (A310 ECO)\n07:20 - Installing Ubuntu and getting GPU acceleration\n08:40 - Arm Homelab in a box?", "Arm Homelab-in-a-Box – Minisforum MS-R1", "86b5bccb-f681-42d7-8551-0d961c8a22c2", "https://www.youtube.com/watch?v=WXfd0rOOtkg", "WXfd0rOOtkg", false, 601, false, 10, "/downloads/JeffGeerling/2025-11-10 Arm Homelab-in-a-Box – Minisforum MS-R1/Arm Homelab-in-a-Box – Minisforum MS-R1 [WXfd0rOOtkg].mkv", false, false, 7, [], 98, ~U[2025-11-10 16:00:53Z], ~U[2025-12-24 08:53:28Z], ~U[2025-12-24 08:53:28Z], "Minisforum just launched the MS-R1, their first Arm workstation PC.\n\nWill it bring Arm into the homelab, in a big way? Or will it suffer the same fate as the Radxa Orion O6, let down by a power-hungry SoC? And will a dedicated GPU fit inside this tiny box?\n\nThings mentioned in this video (amzn.to links are affiliate links):\n\n - Minisforum MS-R1: https://s.minisforum.com/4hRFZbj\n - MS-R1 benchmarks and test data: https://github.com/geerlingguy/sbc-reviews/issues/89\n - Radxa Orion O6 review: https://www.youtube.com/watch?v=OMnCqmM-WKo\n - Abovetop Nvidia RTX A2000 SFF GPU: https://www.newegg.com/abovetop-Model-A2000laptop/p/1DW-00MF-00001\n - Intel Arc A310 ECO GPU: https://amzn.to/49Q3vn4\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Hardware overview\n01:47 - Cix's 12-core Arm SoC\n02:57 - Deeper problems\n03:55 - 10 Gbps Networking and AI inference\n04:55 - Installing a dGPU (RTX A2000)\n06:15 - A BIOS detour and AC Power Loss bug\n06:50 - Trying an Intel GPU (A310 ECO)\n07:20 - Installing Ubuntu and getting GPU acceleration\n08:40 - Arm Homelab in a box?", "Arm Homelab-in-a-Box – Minisforum MS-R1", "https://www.youtube.com/watch?v=WXfd0rOOtkg", "WXfd0rOOtkg", 601, false, "/downloads/JeffGeerling/2025-11-10 Arm Homelab-in-a-Box – Minisforum MS-R1/Arm Homelab-in-a-Box – Minisforum MS-R1 [WXfd0rOOtkg].mkv", false, 7, ~U[2025-11-10 16:00:53Z]] 08:53:28.176 [debug] QUERY OK source="sources" db=0.2ms idle=51.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 08:53:28.176 [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] 08:53:28.177 [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 [18771] 08:53:28.177 [debug] Current batch of media processed. Will check again in 1000ms 08:53:29.178 [debug] Current batch of media processed. Will check again in 1000ms 08:53:30.180 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Qualcomm and Arduino just launched the Uno Q, and it's... weird.\n\nArduino sent me a review unit to test, after I had already placed an order for a production unit. Both came in the same week, but I still like to disclose if any review equipment is sent for testing!\n\nMentioned in this video:\n\n - SBC Reviews - Uno Q: https://github.com/geerlingguy/sbc-reviews/issues/83\n - Arduino Uno Q: https://www.arduino.cc/product-uno-q\n - Radxa X4: https://radxa.com/products/x/x4/\n - Raspberry Pi 5: https://www.raspberrypi.com/products/raspberry-pi-5/\n - Arduino Yun: https://docs.arduino.cc/retired/boards/arduino-yun/\n - Electromaker video on Uno Q projects: https://www.youtube.com/watch?v=Zf99bvQbwf8\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - What is the Q?\n01:08 - Qualcomm Dragonwing and the App Lab\n01:51 - USB-C all the things\n02:55 - SBC Performance and efficiency\n03:57 - Compared to a Pi 5 and Radxa X4\n04:30 - Edge AI?\n05:28 - Qualcomm and Arduino and Open Source", "duration" => 444, "filename" => "/downloads/JeffGeerling/2025-10-31 Arduino made a weird SBC/Arduino made a weird SBC [Vz3pD3_CDUE].mkv", "id" => "Vz3pD3_CDUE", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Vz3pD3_CDUE", "playlist_index" => 11, "timestamp" => 1761919254, "title" => "Arduino made a weird SBC", "upload_date" => "20251031"} 08:53:30.180 [debug] QUERY OK source="sources" db=0.2ms queue=0.2ms idle=736.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:53:30.181 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=736.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] 08:53:30.182 [debug] QUERY OK source="media_items" db=0.5ms idle=737.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-31 14:00:54Z], 7] 08:53:30.183 [debug] QUERY OK source="media_items" db=1.0ms idle=738.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Qualcomm and Arduino just launched the Uno Q, and it's... weird.\n\nArduino sent me a review unit to test, after I had already placed an order for a production unit. Both came in the same week, but I still like to disclose if any review equipment is sent for testing!\n\nMentioned in this video:\n\n - SBC Reviews - Uno Q: https://github.com/geerlingguy/sbc-reviews/issues/83\n - Arduino Uno Q: https://www.arduino.cc/product-uno-q\n - Radxa X4: https://radxa.com/products/x/x4/\n - Raspberry Pi 5: https://www.raspberrypi.com/products/raspberry-pi-5/\n - Arduino Yun: https://docs.arduino.cc/retired/boards/arduino-yun/\n - Electromaker video on Uno Q projects: https://www.youtube.com/watch?v=Zf99bvQbwf8\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - What is the Q?\n01:08 - Qualcomm Dragonwing and the App Lab\n01:51 - USB-C all the things\n02:55 - SBC Performance and efficiency\n03:57 - Compared to a Pi 5 and Radxa X4\n04:30 - Edge AI?\n05:28 - Qualcomm and Arduino and Open Source", "Arduino made a weird SBC", "a9e3fd0b-0b5d-48c2-bb46-7f69c7d9a294", "https://www.youtube.com/watch?v=Vz3pD3_CDUE", "Vz3pD3_CDUE", false, 444, false, 11, "/downloads/JeffGeerling/2025-10-31 Arduino made a weird SBC/Arduino made a weird SBC [Vz3pD3_CDUE].mkv", false, false, 7, [], 98, ~U[2025-10-31 14:00:54Z], ~U[2025-12-24 08:53:30Z], ~U[2025-12-24 08:53:30Z], "Qualcomm and Arduino just launched the Uno Q, and it's... weird.\n\nArduino sent me a review unit to test, after I had already placed an order for a production unit. Both came in the same week, but I still like to disclose if any review equipment is sent for testing!\n\nMentioned in this video:\n\n - SBC Reviews - Uno Q: https://github.com/geerlingguy/sbc-reviews/issues/83\n - Arduino Uno Q: https://www.arduino.cc/product-uno-q\n - Radxa X4: https://radxa.com/products/x/x4/\n - Raspberry Pi 5: https://www.raspberrypi.com/products/raspberry-pi-5/\n - Arduino Yun: https://docs.arduino.cc/retired/boards/arduino-yun/\n - Electromaker video on Uno Q projects: https://www.youtube.com/watch?v=Zf99bvQbwf8\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - What is the Q?\n01:08 - Qualcomm Dragonwing and the App Lab\n01:51 - USB-C all the things\n02:55 - SBC Performance and efficiency\n03:57 - Compared to a Pi 5 and Radxa X4\n04:30 - Edge AI?\n05:28 - Qualcomm and Arduino and Open Source", "Arduino made a weird SBC", "https://www.youtube.com/watch?v=Vz3pD3_CDUE", "Vz3pD3_CDUE", 444, false, "/downloads/JeffGeerling/2025-10-31 Arduino made a weird SBC/Arduino made a weird SBC [Vz3pD3_CDUE].mkv", false, 7, ~U[2025-10-31 14:00:54Z]] 08:53:30.184 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=55.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 08:53:30.184 [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] 08:53:30.185 [debug] QUERY OK source="media_items" db=0.2ms 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 [16870] 08:53:30.185 [debug] Current batch of media processed. Will check again in 1000ms 08:53:31.187 [debug] Current batch of media processed. Will check again in 1000ms 08:53:32.188 [debug] Current batch of media processed. Will check again in 1000ms 08:53:33.189 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Vintage Computer Festival Midwest 2025 was overwhelming (in a good way).\n\nI'll tell you my favorite experiences and interactions with the vintage tech community in this video.\n\nSome of the projects and products mentioned in this video:\n\n - VCF Midwest: https://www.vcfmw.org\n - yyzkevin PCMCIA Pico card: https://www.yyzkevin.ca/pico-pcmcia/\n - Open Source CRT analog board: https://github.com/tdaede/td-crt\n - Meshtastic 64 on C64: https://64jim64.blogspot.com/2025/09/meshtastic-64-meshtastic-radio-for.html\n - Juicy Crumb Systems: https://juicycrumb.com\n - Mac84 Video on Personics View Control System: https://www.youtube.com/watch?v=41jCujsrHVg\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Old computers, new tricks in Chicago\n00:54 - Nostalgia for old Macs\n02:00 - The free pile, and Jeff is easily distracted\n02:47 - Open source CRT analog board replacement\n03:41 - An unexpected meeting at RCV's booth\n04:21 - Cursed input devices\n05:07 - Meshtastic on a C64\n05:54 - My timing sense tingled\n06:57 - Side quest - BlueSCSI disk rescue\n08:20 - Relay computers, 70 lb HDDs, and ESMs\n09:38 - Preventing e-waste, and analog DRM\n10:42 - The anti-AI", "duration" => 720, "filename" => "/downloads/JeffGeerling/2025-10-16 We used to actually own our computers/We used to actually own our computers [hF0NKvmQmVA].mkv", "id" => "hF0NKvmQmVA", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=hF0NKvmQmVA", "playlist_index" => 12, "timestamp" => 1760623274, "title" => "We used to actually own our computers", "upload_date" => "20251016"} 08:53:33.190 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=1745.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] 08:53:33.191 [debug] QUERY OK source="sources" db=0.3ms idle=1746.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 08:53:33.192 [debug] QUERY OK source="media_items" db=0.6ms idle=1746.8ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-16 14:01:14Z], 7] 08:53:33.193 [debug] QUERY OK source="media_items" db=1.1ms idle=1059.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Vintage Computer Festival Midwest 2025 was overwhelming (in a good way).\n\nI'll tell you my favorite experiences and interactions with the vintage tech community in this video.\n\nSome of the projects and products mentioned in this video:\n\n - VCF Midwest: https://www.vcfmw.org\n - yyzkevin PCMCIA Pico card: https://www.yyzkevin.ca/pico-pcmcia/\n - Open Source CRT analog board: https://github.com/tdaede/td-crt\n - Meshtastic 64 on C64: https://64jim64.blogspot.com/2025/09/meshtastic-64-meshtastic-radio-for.html\n - Juicy Crumb Systems: https://juicycrumb.com\n - Mac84 Video on Personics View Control System: https://www.youtube.com/watch?v=41jCujsrHVg\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Old computers, new tricks in Chicago\n00:54 - Nostalgia for old Macs\n02:00 - The free pile, and Jeff is easily distracted\n02:47 - Open source CRT analog board replacement\n03:41 - An unexpected meeting at RCV's booth\n04:21 - Cursed input devices\n05:07 - Meshtastic on a C64\n05:54 - My timing sense tingled\n06:57 - Side quest - BlueSCSI disk rescue\n08:20 - Relay computers, 70 lb HDDs, and ESMs\n09:38 - Preventing e-waste, and analog DRM\n10:42 - The anti-AI", "We used to actually own our computers", "33ace4d7-dd8d-4a29-a4d5-9edb46bd654a", "https://www.youtube.com/watch?v=hF0NKvmQmVA", "hF0NKvmQmVA", false, 720, false, 12, "/downloads/JeffGeerling/2025-10-16 We used to actually own our computers/We used to actually own our computers [hF0NKvmQmVA].mkv", false, false, 7, [], 98, ~U[2025-10-16 14:01:14Z], ~U[2025-12-24 08:53:33Z], ~U[2025-12-24 08:53:33Z], "Vintage Computer Festival Midwest 2025 was overwhelming (in a good way).\n\nI'll tell you my favorite experiences and interactions with the vintage tech community in this video.\n\nSome of the projects and products mentioned in this video:\n\n - VCF Midwest: https://www.vcfmw.org\n - yyzkevin PCMCIA Pico card: https://www.yyzkevin.ca/pico-pcmcia/\n - Open Source CRT analog board: https://github.com/tdaede/td-crt\n - Meshtastic 64 on C64: https://64jim64.blogspot.com/2025/09/meshtastic-64-meshtastic-radio-for.html\n - Juicy Crumb Systems: https://juicycrumb.com\n - Mac84 Video on Personics View Control System: https://www.youtube.com/watch?v=41jCujsrHVg\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Old computers, new tricks in Chicago\n00:54 - Nostalgia for old Macs\n02:00 - The free pile, and Jeff is easily distracted\n02:47 - Open source CRT analog board replacement\n03:41 - An unexpected meeting at RCV's booth\n04:21 - Cursed input devices\n05:07 - Meshtastic on a C64\n05:54 - My timing sense tingled\n06:57 - Side quest - BlueSCSI disk rescue\n08:20 - Relay computers, 70 lb HDDs, and ESMs\n09:38 - Preventing e-waste, and analog DRM\n10:42 - The anti-AI", "We used to actually own our computers", "https://www.youtube.com/watch?v=hF0NKvmQmVA", "hF0NKvmQmVA", 720, false, "/downloads/JeffGeerling/2025-10-16 We used to actually own our computers/We used to actually own our computers [hF0NKvmQmVA].mkv", false, 7, ~U[2025-10-16 14:01:14Z]] 08:53:33.194 [debug] QUERY OK source="sources" db=0.3ms idle=58.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 08:53:33.194 [debug] QUERY OK source="media_profiles" db=0.2ms idle=3.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 08:53:33.195 [debug] QUERY OK source="media_items" db=0.2ms 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 [14006] 08:53:33.195 [debug] Current batch of media processed. Will check again in 1000ms 08:53:34.196 [debug] Current batch of media processed. Will check again in 1000ms 08:53:35.197 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Who saw THIS coming? Qualcomm just announced their intent to acquire Arduino. And they're making a new SBC, the Uno Q!\n\nLearn more in this video, and read their official press release for more info: https://www.qualcomm.com/news/releases/2025/10/qualcomm-to-acquire-arduino-accelerating-developers--access-to-i\n\nSome things I mentioned in this video:\n\n - Arduino Uno Q: https://www.arduino.cc/product-uno-q\n - Arduino Uno R3: https://amzn.to/3WpYx8J\n - Arduino Uno R4 WiFi: https://amzn.to/4nZr9RW\n - My first Arduino blinky repo: https://github.com/geerlingguy/blinky\n - Polanduino: https://github.com/mfolejewski/Polanduino\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Qualcomm acquires Arduino\n01:09 - Why does Qualcomm want Arduino?\n02:12 - A new joint SBC: Arduino Uno Q\n02:52 - Two big questions\n03:50 - Still open source?\n04:44 - The value of their first SBC", "duration" => 337, "filename" => "/downloads/JeffGeerling/2025-10-07 Qualcomm just bought Arduino, and they're making a tiny computer/Qualcomm just bought Arduino, and they're making a tiny computer [CfKX616-nsE].mkv", "id" => "CfKX616-nsE", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=CfKX616-nsE", "playlist_index" => 13, "timestamp" => 1759842032, "title" => "Qualcomm just bought Arduino, and they're making a tiny computer", "upload_date" => "20251007"} 08:53:35.198 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=753.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:53:35.199 [debug] QUERY OK source="sources" db=0.2ms idle=754.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] 08:53:35.199 [debug] QUERY OK source="media_items" db=0.6ms idle=754.6ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-10-07 13:00:32Z], 7] 08:53:35.201 [debug] QUERY OK source="media_items" db=0.7ms idle=755.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Who saw THIS coming? Qualcomm just announced their intent to acquire Arduino. And they're making a new SBC, the Uno Q!\n\nLearn more in this video, and read their official press release for more info: https://www.qualcomm.com/news/releases/2025/10/qualcomm-to-acquire-arduino-accelerating-developers--access-to-i\n\nSome things I mentioned in this video:\n\n - Arduino Uno Q: https://www.arduino.cc/product-uno-q\n - Arduino Uno R3: https://amzn.to/3WpYx8J\n - Arduino Uno R4 WiFi: https://amzn.to/4nZr9RW\n - My first Arduino blinky repo: https://github.com/geerlingguy/blinky\n - Polanduino: https://github.com/mfolejewski/Polanduino\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Qualcomm acquires Arduino\n01:09 - Why does Qualcomm want Arduino?\n02:12 - A new joint SBC: Arduino Uno Q\n02:52 - Two big questions\n03:50 - Still open source?\n04:44 - The value of their first SBC", "Qualcomm just bought Arduino, and they're making a tiny computer", "373a908c-85b7-4ae8-b34c-be6e93a6a66f", "https://www.youtube.com/watch?v=CfKX616-nsE", "CfKX616-nsE", false, 337, false, 13, "/downloads/JeffGeerling/2025-10-07 Qualcomm just bought Arduino, and they're making a tiny computer/Qualcomm just bought Arduino, and they're making a tiny computer [CfKX616-nsE].mkv", false, false, 7, [], 98, ~U[2025-10-07 13:00:32Z], ~U[2025-12-24 08:53:35Z], ~U[2025-12-24 08:53:35Z], "Who saw THIS coming? Qualcomm just announced their intent to acquire Arduino. And they're making a new SBC, the Uno Q!\n\nLearn more in this video, and read their official press release for more info: https://www.qualcomm.com/news/releases/2025/10/qualcomm-to-acquire-arduino-accelerating-developers--access-to-i\n\nSome things I mentioned in this video:\n\n - Arduino Uno Q: https://www.arduino.cc/product-uno-q\n - Arduino Uno R3: https://amzn.to/3WpYx8J\n - Arduino Uno R4 WiFi: https://amzn.to/4nZr9RW\n - My first Arduino blinky repo: https://github.com/geerlingguy/blinky\n - Polanduino: https://github.com/mfolejewski/Polanduino\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Qualcomm acquires Arduino\n01:09 - Why does Qualcomm want Arduino?\n02:12 - A new joint SBC: Arduino Uno Q\n02:52 - Two big questions\n03:50 - Still open source?\n04:44 - The value of their first SBC", "Qualcomm just bought Arduino, and they're making a tiny computer", "https://www.youtube.com/watch?v=CfKX616-nsE", "CfKX616-nsE", 337, false, "/downloads/JeffGeerling/2025-10-07 Qualcomm just bought Arduino, and they're making a tiny computer/Qualcomm just bought Arduino, and they're making a tiny computer [CfKX616-nsE].mkv", false, 7, ~U[2025-10-07 13:00:32Z]] 08:53:35.201 [debug] QUERY OK source="sources" db=0.2ms idle=62.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 08:53:35.201 [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] 08:53:35.202 [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 [12333] 08:53:35.202 [debug] Current batch of media processed. Will check again in 1000ms 08:53:36.203 [debug] Current batch of media processed. Will check again in 1000ms 08:53:37.204 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "The Raspberry Pi 500+ adds on things missing from the regular 500. But at what cost?\n\nAnd with full RGB... is it any better at gaming? What if we throw in an eGPU?\n\nMentioned in this video:\n\n - Raspberry Pi 500+: https://www.raspberrypi.com/products/raspberry-pi-500-plus/\n - Raspberry Pi Monitor: https://www.raspberrypi.com/products/raspberry-pi-monitor/\n - Lumafield scans:\n - Pi 500+ 'top' (right side): https://voyager.lumafield.com/project/79ccb3a4-21a0-40eb-ba95-21057900883f\n - Pi 500+ 'bottom' (left side): https://voyager.lumafield.com/project/0506155d-2d8f-4a49-832b-104d215999c9\n - ZX Spectrum Video by Adrian's Digital Basement: https://www.youtube.com/watch?v=RMG_StQ67kA\n\nAnd here are all the parts I used in testing the Pi 500+ (some links are affiliate links):\n\n - RIITOP NVMe to USB Docking Station: https://amzn.to/46yvPaC\n - JMT M.2 M-Key to OCuLink PCIe Dock: https://amzn.to/4pCCokS\n - chenyang SFF-8611 OCuLink Cable: https://amzn.to/481Otdn\n - Lian Li 750W SFX Power Supply: https://amzn.to/3Ied0kV\n - AVerMedia GC513 Live Gamer external Capture Card: https://amzn.to/3Vyz78C\n - Mechanical keyboard key cap puller: https://amzn.to/3KiuJZ0\n - dagaladoo Low Profile PBT Keycaps: https://amzn.to/3KjOCyX\n - KBDiy 9009 Doys Low Profile PBT Keycaps: https://amzn.to/4mulpyJ\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Mechanical keyboard, NVMe, 16 GB RAM, $200\n01:57 - Performance\n02:52 - Looking inside with Lumafield CT scans\n04:36 - Cracking the case\n05:20 - Oculink and eGPU Docks\n11:02 - AMD RX 7900 XT on a Pi 500+\n12:27 - We're gaming! And private LLM'ing!\n13:53 - How's the keyboard?\n14:49 - Alternate keycaps and mechanical keyboarding\n18:31 - Keyboard configuration, RGB, and an easter egg\n19:55 - Is it worth $110 more?", "duration" => 1255, "filename" => "/downloads/JeffGeerling/2025-09-25 Raspberry Pi 500+: NOW we're gaming!/Raspberry Pi 500+: NOW we're gaming! [Dv3RRAx7G6E].mkv", "id" => "Dv3RRAx7G6E", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=Dv3RRAx7G6E", "playlist_index" => 14, "timestamp" => 1758783624, "title" => "Raspberry Pi 500+: NOW we're gaming!", "upload_date" => "20250925"} 08:53:37.205 [debug] QUERY OK source="sources" db=0.2ms idle=760.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] 08:53:37.205 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=761.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:53:37.206 [debug] QUERY OK source="media_items" db=0.6ms idle=761.4ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-25 07:00:24Z], 7] 08:53:37.306 [debug] QUERY OK source="media_items" db=99.2ms idle=762.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Raspberry Pi 500+ adds on things missing from the regular 500. But at what cost?\n\nAnd with full RGB... is it any better at gaming? What if we throw in an eGPU?\n\nMentioned in this video:\n\n - Raspberry Pi 500+: https://www.raspberrypi.com/products/raspberry-pi-500-plus/\n - Raspberry Pi Monitor: https://www.raspberrypi.com/products/raspberry-pi-monitor/\n - Lumafield scans:\n - Pi 500+ 'top' (right side): https://voyager.lumafield.com/project/79ccb3a4-21a0-40eb-ba95-21057900883f\n - Pi 500+ 'bottom' (left side): https://voyager.lumafield.com/project/0506155d-2d8f-4a49-832b-104d215999c9\n - ZX Spectrum Video by Adrian's Digital Basement: https://www.youtube.com/watch?v=RMG_StQ67kA\n\nAnd here are all the parts I used in testing the Pi 500+ (some links are affiliate links):\n\n - RIITOP NVMe to USB Docking Station: https://amzn.to/46yvPaC\n - JMT M.2 M-Key to OCuLink PCIe Dock: https://amzn.to/4pCCokS\n - chenyang SFF-8611 OCuLink Cable: https://amzn.to/481Otdn\n - Lian Li 750W SFX Power Supply: https://amzn.to/3Ied0kV\n - AVerMedia GC513 Live Gamer external Capture Card: https://amzn.to/3Vyz78C\n - Mechanical keyboard key cap puller: https://amzn.to/3KiuJZ0\n - dagaladoo Low Profile PBT Keycaps: https://amzn.to/3KjOCyX\n - KBDiy 9009 Doys Low Profile PBT Keycaps: https://amzn.to/4mulpyJ\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Mechanical keyboard, NVMe, 16 GB RAM, $200\n01:57 - Performance\n02:52 - Looking inside with Lumafield CT scans\n04:36 - Cracking the case\n05:20 - Oculink and eGPU Docks\n11:02 - AMD RX 7900 XT on a Pi 500+\n12:27 - We're gaming! And private LLM'ing!\n13:53 - How's the keyboard?\n14:49 - Alternate keycaps and mechanical keyboarding\n18:31 - Keyboard configuration, RGB, and an easter egg\n19:55 - Is it worth $110 more?", "Raspberry Pi 500+: NOW we're gaming!", "cb1ce315-8be2-4ae7-a957-589289e8cf57", "https://www.youtube.com/watch?v=Dv3RRAx7G6E", "Dv3RRAx7G6E", false, 1255, false, 14, "/downloads/JeffGeerling/2025-09-25 Raspberry Pi 500+: NOW we're gaming!/Raspberry Pi 500+: NOW we're gaming! [Dv3RRAx7G6E].mkv", false, false, 7, [], 98, ~U[2025-09-25 07:00:24Z], ~U[2025-12-24 08:53:37Z], ~U[2025-12-24 08:53:37Z], "The Raspberry Pi 500+ adds on things missing from the regular 500. But at what cost?\n\nAnd with full RGB... is it any better at gaming? What if we throw in an eGPU?\n\nMentioned in this video:\n\n - Raspberry Pi 500+: https://www.raspberrypi.com/products/raspberry-pi-500-plus/\n - Raspberry Pi Monitor: https://www.raspberrypi.com/products/raspberry-pi-monitor/\n - Lumafield scans:\n - Pi 500+ 'top' (right side): https://voyager.lumafield.com/project/79ccb3a4-21a0-40eb-ba95-21057900883f\n - Pi 500+ 'bottom' (left side): https://voyager.lumafield.com/project/0506155d-2d8f-4a49-832b-104d215999c9\n - ZX Spectrum Video by Adrian's Digital Basement: https://www.youtube.com/watch?v=RMG_StQ67kA\n\nAnd here are all the parts I used in testing the Pi 500+ (some links are affiliate links):\n\n - RIITOP NVMe to USB Docking Station: https://amzn.to/46yvPaC\n - JMT M.2 M-Key to OCuLink PCIe Dock: https://amzn.to/4pCCokS\n - chenyang SFF-8611 OCuLink Cable: https://amzn.to/481Otdn\n - Lian Li 750W SFX Power Supply: https://amzn.to/3Ied0kV\n - AVerMedia GC513 Live Gamer external Capture Card: https://amzn.to/3Vyz78C\n - Mechanical keyboard key cap puller: https://amzn.to/3KiuJZ0\n - dagaladoo Low Profile PBT Keycaps: https://amzn.to/3KjOCyX\n - KBDiy 9009 Doys Low Profile PBT Keycaps: https://amzn.to/4mulpyJ\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Mechanical keyboard, NVMe, 16 GB RAM, $200\n01:57 - Performance\n02:52 - Looking inside with Lumafield CT scans\n04:36 - Cracking the case\n05:20 - Oculink and eGPU Docks\n11:02 - AMD RX 7900 XT on a Pi 500+\n12:27 - We're gaming! And private LLM'ing!\n13:53 - How's the keyboard?\n14:49 - Alternate keycaps and mechanical keyboarding\n18:31 - Keyboard configuration, RGB, and an easter egg\n19:55 - Is it worth $110 more?", "Raspberry Pi 500+: NOW we're gaming!", "https://www.youtube.com/watch?v=Dv3RRAx7G6E", "Dv3RRAx7G6E", 1255, false, "/downloads/JeffGeerling/2025-09-25 Raspberry Pi 500+: NOW we're gaming!/Raspberry Pi 500+: NOW we're gaming! [Dv3RRAx7G6E].mkv", false, 7, ~U[2025-09-25 07:00:24Z]] 08:53:37.307 [debug] QUERY OK source="sources" db=0.3ms idle=164.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] 08:53:37.307 [debug] QUERY OK source="media_profiles" db=0.2ms idle=102.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] 08:53:37.308 [debug] QUERY OK source="media_items" db=0.2ms idle=102.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 [9989] 08:53:37.308 [debug] Current batch of media processed. Will check again in 1000ms 08:53:38.309 [debug] Current batch of media processed. Will check again in 1000ms 08:53:39.310 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "It's been a while. Some Kickstarters take time.\n\nWhat do you think about doing the same thing 10 times in a row, over and over? If that's your jam, build a cluster like I did in this video!\n\nIf you want to replicate the Compute Blade Cluster, here are all the parts I used (some links are affiliate links):\n\n - Compute Blade DEV: https://www.pishop.us/product/compute-blade-dev/\n - Compute Blade Standard Fan Unit: https://www.pishop.us/product/fansta-1v1-0/\n - Compute Blade 10\" 3D Print Rackmount: https://github.com/Uptime-Lab/compute-blade/tree/main/models/bladerunner\n - Raspberry Pi CM5 16GB (CM5016000): https://www.pishop.us/product/raspberry-pi-compute-module-5-16gb-ram-lite-cm5016000/\n - GLOTRENDS Aluminum CM5 Heatsink: https://amzn.to/45YACBV\n - Patriot P300 256GB NVMe SSD 10-pack: https://amzn.to/4lPJ0JC\n - GigaPlus 2.5 Gbps 10 port PoE+ switch: https://amzn.to/3UNOwSd\n - GigaPlus 10\" Rack Mount 3D Print ears: https://www.printables.com/model/1215585-unified-10-rack-gigaplus-switch-mounting-ears\n - Monoprice Cat6A SlimRun 6\" Cat6 patch cables (10 pack): https://amzn.to/4fX1gzr\n - ioplex SFP+ Twinax DAC patch cable: https://amzn.to/47UlPKX\n - DeskPi RackMate TT: https://amzn.to/3UUjCHP\n\nOther resources mentioned in the video:\n\n - My older Compute Blade video: https://www.youtube.com/watch?v=rKDGlpnP-vE\n - Xerxes Pi Kickstarter: https://www.kickstarter.com/projects/1907647187/small-board-big-possibilities-xerxes-pi\n - Xerxes Pi testing: https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/753\n - Unredacted Labs' Tor exit cluster: https://unredacted.org/blog/2025/05/unredacted-labs/\n - World's Largest Pi Cluster at UC Santa Barbara: https://www.independent.com/2025/04/29/worlds-biggest-raspberry-pi-cluster-is-now-at-uc-santa-barbara/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - 2 years 2 long\n00:32 - Another blade\n01:30 - Unboxing a cluster\n03:06 - Assembling one of 10\n06:11 - A bandolier of microSD cards\n07:16 - Assembling blades 2-10\n08:16 - Next steps - fans and storage\n10:17 - Flashing NVMe drives\n11:00 - Only Fan Units\n12:45 - They all just... disappeared\n14:33 - Spending another $200\n15:45 - Cluster benchmarks: HPL\n16:23 - Spending another $70\n17:03 - Framework cluster vs Pi cluster\n18:12 - AI clustering (down one node)\n19:26 - llama.cpp is totally RPC\n20:54 - Exo and Distributed Llama\n22:09 - Blade (the movie) vs blade (the compute)", "duration" => 1429, "filename" => "/downloads/JeffGeerling/2025-09-19 I regret building a $3000 Pi AI Cluster/I regret building a $3000 Pi AI Cluster [8SiB-bNyP5E].mkv", "id" => "8SiB-bNyP5E", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=8SiB-bNyP5E", "playlist_index" => 15, "timestamp" => 1758290414, "title" => "I regret building a $3000 Pi AI Cluster", "upload_date" => "20250919"} 08:53:39.311 [debug] QUERY OK source="sources" db=0.1ms idle=866.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] 08:53:39.311 [debug] QUERY OK source="sources" db=0.1ms idle=866.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:53:39.312 [debug] QUERY OK source="media_items" db=0.6ms idle=867.2ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-19 14:00:14Z], 7] 08:53:39.331 [debug] QUERY OK source="media_items" db=18.1ms idle=868.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["It's been a while. Some Kickstarters take time.\n\nWhat do you think about doing the same thing 10 times in a row, over and over? If that's your jam, build a cluster like I did in this video!\n\nIf you want to replicate the Compute Blade Cluster, here are all the parts I used (some links are affiliate links):\n\n - Compute Blade DEV: https://www.pishop.us/product/compute-blade-dev/\n - Compute Blade Standard Fan Unit: https://www.pishop.us/product/fansta-1v1-0/\n - Compute Blade 10\" 3D Print Rackmount: https://github.com/Uptime-Lab/compute-blade/tree/main/models/bladerunner\n - Raspberry Pi CM5 16GB (CM5016000): https://www.pishop.us/product/raspberry-pi-compute-module-5-16gb-ram-lite-cm5016000/\n - GLOTRENDS Aluminum CM5 Heatsink: https://amzn.to/45YACBV\n - Patriot P300 256GB NVMe SSD 10-pack: https://amzn.to/4lPJ0JC\n - GigaPlus 2.5 Gbps 10 port PoE+ switch: https://amzn.to/3UNOwSd\n - GigaPlus 10\" Rack Mount 3D Print ears: https://www.printables.com/model/1215585-unified-10-rack-gigaplus-switch-mounting-ears\n - Monoprice Cat6A SlimRun 6\" Cat6 patch cables (10 pack): https://amzn.to/4fX1gzr\n - ioplex SFP+ Twinax DAC patch cable: https://amzn.to/47UlPKX\n - DeskPi RackMate TT: https://amzn.to/3UUjCHP\n\nOther resources mentioned in the video:\n\n - My older Compute Blade video: https://www.youtube.com/watch?v=rKDGlpnP-vE\n - Xerxes Pi Kickstarter: https://www.kickstarter.com/projects/1907647187/small-board-big-possibilities-xerxes-pi\n - Xerxes Pi testing: https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/753\n - Unredacted Labs' Tor exit cluster: https://unredacted.org/blog/2025/05/unredacted-labs/\n - World's Largest Pi Cluster at UC Santa Barbara: https://www.independent.com/2025/04/29/worlds-biggest-raspberry-pi-cluster-is-now-at-uc-santa-barbara/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - 2 years 2 long\n00:32 - Another blade\n01:30 - Unboxing a cluster\n03:06 - Assembling one of 10\n06:11 - A bandolier of microSD cards\n07:16 - Assembling blades 2-10\n08:16 - Next steps - fans and storage\n10:17 - Flashing NVMe drives\n11:00 - Only Fan Units\n12:45 - They all just... disappeared\n14:33 - Spending another $200\n15:45 - Cluster benchmarks: HPL\n16:23 - Spending another $70\n17:03 - Framework cluster vs Pi cluster\n18:12 - AI clustering (down one node)\n19:26 - llama.cpp is totally RPC\n20:54 - Exo and Distributed Llama\n22:09 - Blade (the movie) vs blade (the compute)", "I regret building a $3000 Pi AI Cluster", "1e61f294-359d-4d80-bcf9-db5fc807bc83", "https://www.youtube.com/watch?v=8SiB-bNyP5E", "8SiB-bNyP5E", false, 1429, false, 15, "/downloads/JeffGeerling/2025-09-19 I regret building a $3000 Pi AI Cluster/I regret building a $3000 Pi AI Cluster [8SiB-bNyP5E].mkv", false, false, 7, [], 98, ~U[2025-09-19 14:00:14Z], ~U[2025-12-24 08:53:39Z], ~U[2025-12-24 08:53:39Z], "It's been a while. Some Kickstarters take time.\n\nWhat do you think about doing the same thing 10 times in a row, over and over? If that's your jam, build a cluster like I did in this video!\n\nIf you want to replicate the Compute Blade Cluster, here are all the parts I used (some links are affiliate links):\n\n - Compute Blade DEV: https://www.pishop.us/product/compute-blade-dev/\n - Compute Blade Standard Fan Unit: https://www.pishop.us/product/fansta-1v1-0/\n - Compute Blade 10\" 3D Print Rackmount: https://github.com/Uptime-Lab/compute-blade/tree/main/models/bladerunner\n - Raspberry Pi CM5 16GB (CM5016000): https://www.pishop.us/product/raspberry-pi-compute-module-5-16gb-ram-lite-cm5016000/\n - GLOTRENDS Aluminum CM5 Heatsink: https://amzn.to/45YACBV\n - Patriot P300 256GB NVMe SSD 10-pack: https://amzn.to/4lPJ0JC\n - GigaPlus 2.5 Gbps 10 port PoE+ switch: https://amzn.to/3UNOwSd\n - GigaPlus 10\" Rack Mount 3D Print ears: https://www.printables.com/model/1215585-unified-10-rack-gigaplus-switch-mounting-ears\n - Monoprice Cat6A SlimRun 6\" Cat6 patch cables (10 pack): https://amzn.to/4fX1gzr\n - ioplex SFP+ Twinax DAC patch cable: https://amzn.to/47UlPKX\n - DeskPi RackMate TT: https://amzn.to/3UUjCHP\n\nOther resources mentioned in the video:\n\n - My older Compute Blade video: https://www.youtube.com/watch?v=rKDGlpnP-vE\n - Xerxes Pi Kickstarter: https://www.kickstarter.com/projects/1907647187/small-board-big-possibilities-xerxes-pi\n - Xerxes Pi testing: https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/753\n - Unredacted Labs' Tor exit cluster: https://unredacted.org/blog/2025/05/unredacted-labs/\n - World's Largest Pi Cluster at UC Santa Barbara: https://www.independent.com/2025/04/29/worlds-biggest-raspberry-pi-cluster-is-now-at-uc-santa-barbara/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - 2 years 2 long\n00:32 - Another blade\n01:30 - Unboxing a cluster\n03:06 - Assembling one of 10\n06:11 - A bandolier of microSD cards\n07:16 - Assembling blades 2-10\n08:16 - Next steps - fans and storage\n10:17 - Flashing NVMe drives\n11:00 - Only Fan Units\n12:45 - They all just... disappeared\n14:33 - Spending another $200\n15:45 - Cluster benchmarks: HPL\n16:23 - Spending another $70\n17:03 - Framework cluster vs Pi cluster\n18:12 - AI clustering (down one node)\n19:26 - llama.cpp is totally RPC\n20:54 - Exo and Distributed Llama\n22:09 - Blade (the movie) vs blade (the compute)", "I regret building a $3000 Pi AI Cluster", "https://www.youtube.com/watch?v=8SiB-bNyP5E", "8SiB-bNyP5E", 1429, false, "/downloads/JeffGeerling/2025-09-19 I regret building a $3000 Pi AI Cluster/I regret building a $3000 Pi AI Cluster [8SiB-bNyP5E].mkv", false, 7, ~U[2025-09-19 14:00:14Z]] 08:53:39.331 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=184.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 08:53:39.332 [debug] QUERY OK source="media_profiles" db=0.2ms idle=20.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] 08:53:39.332 [debug] QUERY OK source="media_items" db=0.2ms idle=20.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 [9106] 08:53:39.333 [debug] Current batch of media processed. Will check again in 1000ms 08:53:40.334 [debug] Current batch of media processed. Will check again in 1000ms 08:53:41.336 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "The number of Raspberry Pis orbiting the earth is about to increase.\n\nThanks to everyone who helped me make this video, over the past year! I learned a LOT (especially how much I don't know) about CubeSats, Ground Stations, amateur radio for space, and more.\n\nMentioned in this video:\n\n - SilverSat: https://silversat.org\n - Build a CubeSat: https://www.youtube.com/@buildacubesat\n - CubeSat TEMPEST: https://ethoslabs.space\n - Tim Fowler's CubeSat Collection on Level 2 Jeff: https://www.youtube.com/watch?v=woO0w92YuC0\n - Saveitforparts: https://www.youtube.com/@saveitforparts\n - RASCube: https://www.robinson-aerospace.com\n - MySat: https://www.mysatkit.com\n - GASPACS: https://artsci.usu.edu/physics/gas/projects/gaspacs\n - Mark Rober's SatGus: https://space.crunchlabs.com\n - Astro Pi: https://astro-pi.org\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Pis in Space!\n01:14 - CubeSat 101\n04:08 - Engineering challenges\n06:48 - MySat\n07:47 - RASCube\n08:43 - Build a CubeSat\n09:16 - CubeSat T.E.M.P.E.S.T.\n11:04 - SilverSat\n12:27 - Dave and Leticia\n15:10 - CubeSat Launch Initiative\n17:09 - The mission is just beginning\n18:14 - Why Raspberry Pi?\n19:49 - Pi security on orbit\n21:12 - Radio communications\n22:42 - Tracking sats from Earth with saveitforparts\n26:16 - What frequency?", "duration" => 1703, "filename" => "/downloads/JeffGeerling/2025-09-12 PIS IN SPACE!/PIS IN SPACE! [qvN3sE2Nv4U].mkv", "id" => "qvN3sE2Nv4U", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=qvN3sE2Nv4U", "playlist_index" => 16, "timestamp" => 1757685684, "title" => "PIS IN SPACE!", "upload_date" => "20250912"} 08:53:41.336 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=892.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:53:41.337 [debug] QUERY OK source="sources" db=0.1ms idle=892.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] 08:53:41.338 [debug] QUERY OK source="media_items" db=0.6ms idle=893.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-12 14:01:24Z], 7] 08:53:41.339 [debug] QUERY OK source="media_items" db=0.9ms idle=894.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The number of Raspberry Pis orbiting the earth is about to increase.\n\nThanks to everyone who helped me make this video, over the past year! I learned a LOT (especially how much I don't know) about CubeSats, Ground Stations, amateur radio for space, and more.\n\nMentioned in this video:\n\n - SilverSat: https://silversat.org\n - Build a CubeSat: https://www.youtube.com/@buildacubesat\n - CubeSat TEMPEST: https://ethoslabs.space\n - Tim Fowler's CubeSat Collection on Level 2 Jeff: https://www.youtube.com/watch?v=woO0w92YuC0\n - Saveitforparts: https://www.youtube.com/@saveitforparts\n - RASCube: https://www.robinson-aerospace.com\n - MySat: https://www.mysatkit.com\n - GASPACS: https://artsci.usu.edu/physics/gas/projects/gaspacs\n - Mark Rober's SatGus: https://space.crunchlabs.com\n - Astro Pi: https://astro-pi.org\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Pis in Space!\n01:14 - CubeSat 101\n04:08 - Engineering challenges\n06:48 - MySat\n07:47 - RASCube\n08:43 - Build a CubeSat\n09:16 - CubeSat T.E.M.P.E.S.T.\n11:04 - SilverSat\n12:27 - Dave and Leticia\n15:10 - CubeSat Launch Initiative\n17:09 - The mission is just beginning\n18:14 - Why Raspberry Pi?\n19:49 - Pi security on orbit\n21:12 - Radio communications\n22:42 - Tracking sats from Earth with saveitforparts\n26:16 - What frequency?", "PIS IN SPACE!", "db0b0985-79f1-479a-972b-06cab663ebbe", "https://www.youtube.com/watch?v=qvN3sE2Nv4U", "qvN3sE2Nv4U", false, 1703, false, 16, "/downloads/JeffGeerling/2025-09-12 PIS IN SPACE!/PIS IN SPACE! [qvN3sE2Nv4U].mkv", false, false, 7, [], 98, ~U[2025-09-12 14:01:24Z], ~U[2025-12-24 08:53:41Z], ~U[2025-12-24 08:53:41Z], "The number of Raspberry Pis orbiting the earth is about to increase.\n\nThanks to everyone who helped me make this video, over the past year! I learned a LOT (especially how much I don't know) about CubeSats, Ground Stations, amateur radio for space, and more.\n\nMentioned in this video:\n\n - SilverSat: https://silversat.org\n - Build a CubeSat: https://www.youtube.com/@buildacubesat\n - CubeSat TEMPEST: https://ethoslabs.space\n - Tim Fowler's CubeSat Collection on Level 2 Jeff: https://www.youtube.com/watch?v=woO0w92YuC0\n - Saveitforparts: https://www.youtube.com/@saveitforparts\n - RASCube: https://www.robinson-aerospace.com\n - MySat: https://www.mysatkit.com\n - GASPACS: https://artsci.usu.edu/physics/gas/projects/gaspacs\n - Mark Rober's SatGus: https://space.crunchlabs.com\n - Astro Pi: https://astro-pi.org\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Pis in Space!\n01:14 - CubeSat 101\n04:08 - Engineering challenges\n06:48 - MySat\n07:47 - RASCube\n08:43 - Build a CubeSat\n09:16 - CubeSat T.E.M.P.E.S.T.\n11:04 - SilverSat\n12:27 - Dave and Leticia\n15:10 - CubeSat Launch Initiative\n17:09 - The mission is just beginning\n18:14 - Why Raspberry Pi?\n19:49 - Pi security on orbit\n21:12 - Radio communications\n22:42 - Tracking sats from Earth with saveitforparts\n26:16 - What frequency?", "PIS IN SPACE!", "https://www.youtube.com/watch?v=qvN3sE2Nv4U", "qvN3sE2Nv4U", 1703, false, "/downloads/JeffGeerling/2025-09-12 PIS IN SPACE!/PIS IN SPACE! [qvN3sE2Nv4U].mkv", false, 7, ~U[2025-09-12 14:01:24Z]] 08:53:41.340 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [7] 08:53:41.340 [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] 08:53:41.341 [debug] QUERY OK source="media_items" db=0.2ms queue=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 [3411] 08:53:41.341 [debug] Current batch of media processed. Will check again in 1000ms 08:53:42.342 [debug] Current batch of media processed. Will check again in 1000ms 08:53:43.344 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "I'm just a guy who drives a car.\n\nMentioned in this video:\n\n - Electric Car GitHub repo: https://github.com/geerlingguy/electric-car\n - Level 1 J1772 charger (Lectron): https://amzn.to/3HIt2Tx\n - Level 2 J1772 charger (Grizzl-E): https://amzn.to/4k0tHwX\n - Level 3 CCS1 to CHAdeMO adapter (A2Z): https://a2zevshop.com/products/ccs1-to-chademo\n - LeLink 2 OBD-II BLE dongle: https://amzn.to/45GYUls\n - LeafSpy Pro App: https://leafspy.com/\n - CarlinKit 5.0 Wireless CarPlay/Android Auto adapter: https://amzn.to/3SW9AVH\n - VIOFO A119 Mini Dashcam: https://amzn.to/4n8HqEB\n - Dongar wiring harness adapter (for dashcam): https://amzn.to/44hbi9f\n - Technology Connections video on car chargers: https://www.youtube.com/watch?v=W96a8svXo14\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - The cheapest used EV\n01:49 - Range anxiety, off the lot\n02:37 - Fixing problems on my new old car\n04:39 - Charging was more confusing than I expected\n06:42 - Modern car design frustrations\n09:01 - An embarassing car wash\n11:06 - Batteries and CHAdeMO cost me $1000\n14:00 - Range anxiety is overrated (mostly)\n15:06 - Things I love: one-pedal driving\n17:06 - Buttons are good!\n18:28 - Maintenance and tire wear\n19:29 - Cheap EV, not cheap car\n20:10 - Range anxiety is real\n21:52 - Fast charging is harder than gas/petrol\n25:35 - Fit for me, maybe not for thee", "duration" => 1555, "filename" => "/downloads/JeffGeerling/2025-09-04 Do I regret buying the cheapest EV?/Do I regret buying the cheapest EV? [hQQtFnLefqw].mkv", "id" => "hQQtFnLefqw", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=hQQtFnLefqw", "playlist_index" => 17, "timestamp" => 1756994471, "title" => "Do I regret buying the cheapest EV?", "upload_date" => "20250904"} 08:53:43.344 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=900.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:53:43.345 [debug] QUERY OK source="sources" db=0.2ms idle=900.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] 08:53:43.346 [debug] QUERY OK source="media_items" db=0.6ms queue=0.1ms idle=901.0ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-09-04 14:01:11Z], 7] 08:53:43.347 [debug] QUERY OK source="media_items" db=1.0ms idle=901.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["I'm just a guy who drives a car.\n\nMentioned in this video:\n\n - Electric Car GitHub repo: https://github.com/geerlingguy/electric-car\n - Level 1 J1772 charger (Lectron): https://amzn.to/3HIt2Tx\n - Level 2 J1772 charger (Grizzl-E): https://amzn.to/4k0tHwX\n - Level 3 CCS1 to CHAdeMO adapter (A2Z): https://a2zevshop.com/products/ccs1-to-chademo\n - LeLink 2 OBD-II BLE dongle: https://amzn.to/45GYUls\n - LeafSpy Pro App: https://leafspy.com/\n - CarlinKit 5.0 Wireless CarPlay/Android Auto adapter: https://amzn.to/3SW9AVH\n - VIOFO A119 Mini Dashcam: https://amzn.to/4n8HqEB\n - Dongar wiring harness adapter (for dashcam): https://amzn.to/44hbi9f\n - Technology Connections video on car chargers: https://www.youtube.com/watch?v=W96a8svXo14\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - The cheapest used EV\n01:49 - Range anxiety, off the lot\n02:37 - Fixing problems on my new old car\n04:39 - Charging was more confusing than I expected\n06:42 - Modern car design frustrations\n09:01 - An embarassing car wash\n11:06 - Batteries and CHAdeMO cost me $1000\n14:00 - Range anxiety is overrated (mostly)\n15:06 - Things I love: one-pedal driving\n17:06 - Buttons are good!\n18:28 - Maintenance and tire wear\n19:29 - Cheap EV, not cheap car\n20:10 - Range anxiety is real\n21:52 - Fast charging is harder than gas/petrol\n25:35 - Fit for me, maybe not for thee", "Do I regret buying the cheapest EV?", "3a7525b4-3427-47eb-a4a4-e88737737e0d", "https://www.youtube.com/watch?v=hQQtFnLefqw", "hQQtFnLefqw", false, 1555, false, 17, "/downloads/JeffGeerling/2025-09-04 Do I regret buying the cheapest EV?/Do I regret buying the cheapest EV? [hQQtFnLefqw].mkv", false, false, 7, [], 98, ~U[2025-09-04 14:01:11Z], ~U[2025-12-24 08:53:43Z], ~U[2025-12-24 08:53:43Z], "I'm just a guy who drives a car.\n\nMentioned in this video:\n\n - Electric Car GitHub repo: https://github.com/geerlingguy/electric-car\n - Level 1 J1772 charger (Lectron): https://amzn.to/3HIt2Tx\n - Level 2 J1772 charger (Grizzl-E): https://amzn.to/4k0tHwX\n - Level 3 CCS1 to CHAdeMO adapter (A2Z): https://a2zevshop.com/products/ccs1-to-chademo\n - LeLink 2 OBD-II BLE dongle: https://amzn.to/45GYUls\n - LeafSpy Pro App: https://leafspy.com/\n - CarlinKit 5.0 Wireless CarPlay/Android Auto adapter: https://amzn.to/3SW9AVH\n - VIOFO A119 Mini Dashcam: https://amzn.to/4n8HqEB\n - Dongar wiring harness adapter (for dashcam): https://amzn.to/44hbi9f\n - Technology Connections video on car chargers: https://www.youtube.com/watch?v=W96a8svXo14\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - The cheapest used EV\n01:49 - Range anxiety, off the lot\n02:37 - Fixing problems on my new old car\n04:39 - Charging was more confusing than I expected\n06:42 - Modern car design frustrations\n09:01 - An embarassing car wash\n11:06 - Batteries and CHAdeMO cost me $1000\n14:00 - Range anxiety is overrated (mostly)\n15:06 - Things I love: one-pedal driving\n17:06 - Buttons are good!\n18:28 - Maintenance and tire wear\n19:29 - Cheap EV, not cheap car\n20:10 - Range anxiety is real\n21:52 - Fast charging is harder than gas/petrol\n25:35 - Fit for me, maybe not for thee", "Do I regret buying the cheapest EV?", "https://www.youtube.com/watch?v=hQQtFnLefqw", "hQQtFnLefqw", 1555, false, "/downloads/JeffGeerling/2025-09-04 Do I regret buying the cheapest EV?/Do I regret buying the cheapest EV? [hQQtFnLefqw].mkv", false, 7, ~U[2025-09-04 14:01:11Z]] 08:53:43.348 [debug] QUERY OK source="sources" db=0.2ms idle=192.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 08:53:43.348 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms 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] 08:53:43.349 [debug] QUERY OK source="media_items" db=0.2ms 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 [1947] 08:53:43.349 [debug] Current batch of media processed. Will check again in 1000ms 08:53:44.350 [debug] Current batch of media processed. Will check again in 1000ms 08:53:45.351 [debug] Current batch of media processed. Will check again in 1000ms 08:53:46.352 [debug] FileFollowerServer Handler: Got media attributes: %{"aspect_ratio" => 1.78, "description" => "Finally, TrueNAS runs on a Raspberry Pi—or any other Arm server with UEFI support!\n\nFULL instructions here: https://www.jeffgeerling.com/blog/2025/how-install-truenas-on-raspberry-pi\n\nMentioned in this video:\n\n - Joel0's TrueNAS on Arm thread: https://forums.truenas.com/t/truenas-on-arm-now-available/49160\n - Links to all the TrueNAS on Arm resources: https://github.com/joel0-truenas/truenas-on-arm/issues/5\n - My arm-nas GitHub project: https://github.com/geerlingguy/arm-nas\n - HL15 Arm ZFS server: https://www.youtube.com/watch?v=Hz5k5WgTkcc\n - Raspberry Pi SATA ZFS server: https://www.youtube.com/watch?v=l30sADfDiM8\n - Homelabs Pi Storage NAS project: https://homepinas.com/en/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nThe Homelabs Pi Server was sent to me by a member of Homelabs Club for testing, and following my typical policy, I am thus marking this video as 'sponsored'. No money exchanged hands, and nobody had any say in the content of this video besides me.\n\nContents:\n\n00:00 - TrueNAS comes to Arm\n01:21 - The UEFI problem\n02:03 - Adding UEFI to Raspberry Pi\n03:24 - Install TrueNAS on Pi\n05:34 - Real-world Pi NAS - HomePiNAS\n06:17 - ZFS on Pi NAS\n06:50 - Should you do it?", "duration" => 438, "filename" => "/downloads/JeffGeerling/2025-08-28 TrueNAS on a custom Raspberry Pi NAS/TrueNAS on a custom Raspberry Pi NAS [XvaXemGDSpk].mkv", "id" => "XvaXemGDSpk", "live_status" => "not_live", "original_url" => "https://www.youtube.com/watch?v=XvaXemGDSpk", "playlist_index" => 18, "timestamp" => 1756389660, "title" => "TrueNAS on a custom Raspberry Pi NAS", "upload_date" => "20250828"} 08:53:46.353 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=1908.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] 08:53:46.354 [debug] QUERY OK source="sources" db=0.1ms idle=1909.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:53:46.354 [debug] QUERY OK source="media_items" db=0.6ms idle=1909.5ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-08-28 14:01:00Z], 7] 08:53:46.356 [debug] QUERY OK source="media_items" db=0.9ms idle=1194.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Finally, TrueNAS runs on a Raspberry Pi—or any other Arm server with UEFI support!\n\nFULL instructions here: https://www.jeffgeerling.com/blog/2025/how-install-truenas-on-raspberry-pi\n\nMentioned in this video:\n\n - Joel0's TrueNAS on Arm thread: https://forums.truenas.com/t/truenas-on-arm-now-available/49160\n - Links to all the TrueNAS on Arm resources: https://github.com/joel0-truenas/truenas-on-arm/issues/5\n - My arm-nas GitHub project: https://github.com/geerlingguy/arm-nas\n - HL15 Arm ZFS server: https://www.youtube.com/watch?v=Hz5k5WgTkcc\n - Raspberry Pi SATA ZFS server: https://www.youtube.com/watch?v=l30sADfDiM8\n - Homelabs Pi Storage NAS project: https://homepinas.com/en/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nThe Homelabs Pi Server was sent to me by a member of Homelabs Club for testing, and following my typical policy, I am thus marking this video as 'sponsored'. No money exchanged hands, and nobody had any say in the content of this video besides me.\n\nContents:\n\n00:00 - TrueNAS comes to Arm\n01:21 - The UEFI problem\n02:03 - Adding UEFI to Raspberry Pi\n03:24 - Install TrueNAS on Pi\n05:34 - Real-world Pi NAS - HomePiNAS\n06:17 - ZFS on Pi NAS\n06:50 - Should you do it?", "TrueNAS on a custom Raspberry Pi NAS", "b07eeb56-0f4f-44d4-a4e9-92cf7be52225", "https://www.youtube.com/watch?v=XvaXemGDSpk", "XvaXemGDSpk", false, 438, false, 18, "/downloads/JeffGeerling/2025-08-28 TrueNAS on a custom Raspberry Pi NAS/TrueNAS on a custom Raspberry Pi NAS [XvaXemGDSpk].mkv", false, false, 7, [], 98, ~U[2025-08-28 14:01:00Z], ~U[2025-12-24 08:53:46Z], ~U[2025-12-24 08:53:46Z], "Finally, TrueNAS runs on a Raspberry Pi—or any other Arm server with UEFI support!\n\nFULL instructions here: https://www.jeffgeerling.com/blog/2025/how-install-truenas-on-raspberry-pi\n\nMentioned in this video:\n\n - Joel0's TrueNAS on Arm thread: https://forums.truenas.com/t/truenas-on-arm-now-available/49160\n - Links to all the TrueNAS on Arm resources: https://github.com/joel0-truenas/truenas-on-arm/issues/5\n - My arm-nas GitHub project: https://github.com/geerlingguy/arm-nas\n - HL15 Arm ZFS server: https://www.youtube.com/watch?v=Hz5k5WgTkcc\n - Raspberry Pi SATA ZFS server: https://www.youtube.com/watch?v=l30sADfDiM8\n - Homelabs Pi Storage NAS project: https://homepinas.com/en/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nThe Homelabs Pi Server was sent to me by a member of Homelabs Club for testing, and following my typical policy, I am thus marking this video as 'sponsored'. No money exchanged hands, and nobody had any say in the content of this video besides me.\n\nContents:\n\n00:00 - TrueNAS comes to Arm\n01:21 - The UEFI problem\n02:03 - Adding UEFI to Raspberry Pi\n03:24 - Install TrueNAS on Pi\n05:34 - Real-world Pi NAS - HomePiNAS\n06:17 - ZFS on Pi NAS\n06:50 - Should you do it?", "TrueNAS on a custom Raspberry Pi NAS", "https://www.youtube.com/watch?v=XvaXemGDSpk", "XvaXemGDSpk", 438, false, "/downloads/JeffGeerling/2025-08-28 TrueNAS on a custom Raspberry Pi NAS/TrueNAS on a custom Raspberry Pi NAS [XvaXemGDSpk].mkv", false, 7, ~U[2025-08-28 14:01:00Z]] 08:53:46.356 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=193.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 08:53:46.357 [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] 08:53:46.357 [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 [1949] 08:53:46.357 [debug] Current batch of media processed. Will check again in 1000ms 08:53:47.358 [debug] Current batch of media processed. Will check again in 1000ms 08:53:47.494 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/@JeffGeerling --simulate --skip-download --ignore-no-formats-error --no-warnings --output /downloads/JeffGeerling/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --remux-video mp4 --format-sort res:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --break-on-existing --download-archive /tmp/pinchflat/data/aa/17/aa179ee37ed1578b01dc6abf5214313ea4dc606547099f6570fa8bdd7a5f0e5b.txt --print-to-file %(.{id,title,live_status,original_url,description,aspect_ratio,duration,upload_date,timestamp,playlist_index,filename})j /tmp/pinchflat/data/da/de/dade78eb94bb19a45387b7294b841a213e994e5da0619932be5edd7b2ed1ae4b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache exited: 101 with: 08:53:47.495 [debug] Gracefully stopping file follower 08:53:47.496 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=331.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:53:47.497 [debug] QUERY OK source="sources" db=0.3ms idle=52.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 08:53:47.497 [debug] QUERY OK source="media_items" db=0.7ms idle=52.7ms SELECT min(m0."upload_date_index") FROM "media_items" AS m0 WHERE (date(m0."uploaded_at") = date(?) AND (m0."source_id" = ?)) [~U[2025-12-22 16:23:09Z], 7] 08:53:47.499 [debug] QUERY OK source="media_items" db=1.0ms idle=53.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["...but most people would never know.\n\nThe two posts referenced in this video:\n\n - Primary time scale failure: https://groups.google.com/a/list.nist.gov/g/internet-time-service/c/o0dDDcr1a8I\n - Update on Internet Time Services: https://groups.google.com/a/list.nist.gov/g/internet-time-service/c/OHOO_1OYjLY\n\nAlso check out the status of all NIST Internet Time Servers: https://tf.nist.gov/tf-cgi/servers.cgi\n\nThumbnail photos were adapted from Wikipedia Commons / US Government Public domain images:\n\n - https://www.nist.gov/pml/time-and-frequency-division/time-and-frequency-metrology-and-distribution\n - https://www.nist.gov/topics/physics/optical-frequency-combs\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - 5 microseconds\n00:39 - What happened?\n02:15 - NTP timing and why it doesn't matter\n03:17 - Timely lessons", "NIST's NTP clock was microseconds from disaster", "2cceeb71-0cae-49a8-a9ab-1989e49f7e21", "https://www.youtube.com/watch?v=ZRB7pjRVVkI", "ZRB7pjRVVkI", false, 317, false, 1, "/downloads/JeffGeerling/2025-12-22 NIST's NTP clock was microseconds from disaster/NIST's NTP clock was microseconds from disaster [ZRB7pjRVVkI].mkv", false, false, 7, [], 98, ~U[2025-12-22 16:23:09Z], ~U[2025-12-24 08:53:47Z], ~U[2025-12-24 08:53:47Z], "...but most people would never know.\n\nThe two posts referenced in this video:\n\n - Primary time scale failure: https://groups.google.com/a/list.nist.gov/g/internet-time-service/c/o0dDDcr1a8I\n - Update on Internet Time Services: https://groups.google.com/a/list.nist.gov/g/internet-time-service/c/OHOO_1OYjLY\n\nAlso check out the status of all NIST Internet Time Servers: https://tf.nist.gov/tf-cgi/servers.cgi\n\nThumbnail photos were adapted from Wikipedia Commons / US Government Public domain images:\n\n - https://www.nist.gov/pml/time-and-frequency-division/time-and-frequency-metrology-and-distribution\n - https://www.nist.gov/topics/physics/optical-frequency-combs\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - 5 microseconds\n00:39 - What happened?\n02:15 - NTP timing and why it doesn't matter\n03:17 - Timely lessons", "NIST's NTP clock was microseconds from disaster", "https://www.youtube.com/watch?v=ZRB7pjRVVkI", "ZRB7pjRVVkI", 317, false, "/downloads/JeffGeerling/2025-12-22 NIST's NTP clock was microseconds from disaster/NIST's NTP clock was microseconds from disaster [ZRB7pjRVVkI].mkv", false, 7, ~U[2025-12-22 16:23:09Z]] 08:53:47.499 [debug] QUERY OK source="sources" db=0.2ms idle=55.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 08:53:47.500 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-12-20 15:00:24Z], 7] 08:53:47.502 [debug] QUERY OK source="media_items" db=1.5ms idle=3.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Shop Micro Center Holiday Deals: https://micro.center/e787eb\nCheck out Micro Center's Other Top Deals: https://micro.center/315b05\nShop Micro Center Bundles: https://micro.center/f7b037\nVisit Micro Center News: https://micro.center/9b77f2\n\nCan a Raspberry Pi match the performance of a modern desktop PC when it comes to GPU performance?\n\nOf course not, in a general sense. But there are specific use cases where you'd be surprised by how close the Pi comes, performance-wise. In some cases, the Pi is actually faster!\n\nResources I mentioned in this video:\n\n - AI Benchmark results and methodology: https://github.com/geerlingguy/ai-benchmarks\n - Multi-GPU benchmark results: https://github.com/geerlingguy/ai-benchmarks/issues/44\n - Use AMD GPUs on Pi: https://www.jeffgeerling.com/blog/2025/using-amd-gpus-on-raspberry-pi-without-recompiling-linux\n - Use Nvidia GPUs on Pi: https://www.jeffgeerling.com/blog/2025/nvidia-graphics-cards-work-on-pi-5-and-rockchip\n - Use Intel GPUs on Pi: https://www.jeffgeerling.com/blog/2025/all-intel-gpus-run-on-raspberry-pi-and-risc-v\n\neGPU Setup (some links are affiliate links):\n\n - Minisforum DEG1 eGPU Dock: https://amzn.to/4s3gUz6\n - Micro SATA Cables Oculink to M.2 adapter: https://amzn.to/49dKKcE\n - Super Flower 850W PSU: https://www.microcenter.com/product/684393/super-flower-leadex-iii-gold-up-850-watt-80-plus-gold-atx-fully-modular-power-supply-atx-31-compatible\n - AMD Radeon AI Pro R9700: https://www.microcenter.com/product/702853/xfx-amd-radeon-ai-pro-r9700-single-fan-32gb-gddr6-pcie-50-graphics-card\n\nDual GPU Setup (some links are affiliate links):\n\n - chenyang PCIe 4.0 M.2 NGFF to SFF-8643: https://amzn.to/4pyqSqt\n - 10Gtek SFF-8644 to SFF-8643 Cable: https://amzn.to/3MKNbup\n - Dolphin PCIe HBA MXH932: https://dolphinics.com/products/MXH932.html\n - Dolphin 3 slot PCIe Backplane: https://dolphinics.com/products/IBP-G4X16-3.html\n\nHUGE thanks to Patrick from @ServeTheHomeVideo for helping me record at Micro Center in Phoenix :)\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Pi vs PC\n00:53 - Enough for Jellyfin? Local LLMs?\n01:50 - 4 GPUs 1 Pi\n02:16 - Comparing costs and energy use\n03:07 - Gaming on haitus (for now)\n03:39 - The setups\n04:56 - ffmpeg and Jellyfin media transcoding\n07:31 - 3D rendering with GravityMark\n08:39 - LLMs on AMD\n09:36 - LLMs on Nvidia\n12:27 - Drivers, Vulkan, and CUDA\n13:06 - Dual GPU - Setup\n15:24 - Sharing memory and PCIe ACS\n16:28 - llama.cpp performance - mixed Nvidia GPUs\n17:08 - 52GB of VRAM on AMD\n17:28 - Intel PC dual Nvidia GPU comparison\n17:56 - Who wins?", "2 GPUs 1 Pi", "35fea7ab-26ea-4fc7-9109-e0ca932cc871", "https://www.youtube.com/watch?v=8X2Y62JGDCo", "8X2Y62JGDCo", false, 1120, false, 2, "/downloads/JeffGeerling/2025-12-20 2 GPUs 1 Pi/2 GPUs 1 Pi [8X2Y62JGDCo].mkv", false, false, 7, [], 98, ~U[2025-12-20 15:00:24Z], ~U[2025-12-24 08:53:47Z], ~U[2025-12-24 08:53:47Z], "Shop Micro Center Holiday Deals: https://micro.center/e787eb\nCheck out Micro Center's Other Top Deals: https://micro.center/315b05\nShop Micro Center Bundles: https://micro.center/f7b037\nVisit Micro Center News: https://micro.center/9b77f2\n\nCan a Raspberry Pi match the performance of a modern desktop PC when it comes to GPU performance?\n\nOf course not, in a general sense. But there are specific use cases where you'd be surprised by how close the Pi comes, performance-wise. In some cases, the Pi is actually faster!\n\nResources I mentioned in this video:\n\n - AI Benchmark results and methodology: https://github.com/geerlingguy/ai-benchmarks\n - Multi-GPU benchmark results: https://github.com/geerlingguy/ai-benchmarks/issues/44\n - Use AMD GPUs on Pi: https://www.jeffgeerling.com/blog/2025/using-amd-gpus-on-raspberry-pi-without-recompiling-linux\n - Use Nvidia GPUs on Pi: https://www.jeffgeerling.com/blog/2025/nvidia-graphics-cards-work-on-pi-5-and-rockchip\n - Use Intel GPUs on Pi: https://www.jeffgeerling.com/blog/2025/all-intel-gpus-run-on-raspberry-pi-and-risc-v\n\neGPU Setup (some links are affiliate links):\n\n - Minisforum DEG1 eGPU Dock: https://amzn.to/4s3gUz6\n - Micro SATA Cables Oculink to M.2 adapter: https://amzn.to/49dKKcE\n - Super Flower 850W PSU: https://www.microcenter.com/product/684393/super-flower-leadex-iii-gold-up-850-watt-80-plus-gold-atx-fully-modular-power-supply-atx-31-compatible\n - AMD Radeon AI Pro R9700: https://www.microcenter.com/product/702853/xfx-amd-radeon-ai-pro-r9700-single-fan-32gb-gddr6-pcie-50-graphics-card\n\nDual GPU Setup (some links are affiliate links):\n\n - chenyang PCIe 4.0 M.2 NGFF to SFF-8643: https://amzn.to/4pyqSqt\n - 10Gtek SFF-8644 to SFF-8643 Cable: https://amzn.to/3MKNbup\n - Dolphin PCIe HBA MXH932: https://dolphinics.com/products/MXH932.html\n - Dolphin 3 slot PCIe Backplane: https://dolphinics.com/products/IBP-G4X16-3.html\n\nHUGE thanks to Patrick from @ServeTheHomeVideo for helping me record at Micro Center in Phoenix :)\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Pi vs PC\n00:53 - Enough for Jellyfin? Local LLMs?\n01:50 - 4 GPUs 1 Pi\n02:16 - Comparing costs and energy use\n03:07 - Gaming on haitus (for now)\n03:39 - The setups\n04:56 - ffmpeg and Jellyfin media transcoding\n07:31 - 3D rendering with GravityMark\n08:39 - LLMs on AMD\n09:36 - LLMs on Nvidia\n12:27 - Drivers, Vulkan, and CUDA\n13:06 - Dual GPU - Setup\n15:24 - Sharing memory and PCIe ACS\n16:28 - llama.cpp performance - mixed Nvidia GPUs\n17:08 - 52GB of VRAM on AMD\n17:28 - Intel PC dual Nvidia GPU comparison\n17:56 - Who wins?", "2 GPUs 1 Pi", "https://www.youtube.com/watch?v=8X2Y62JGDCo", "8X2Y62JGDCo", 1120, false, "/downloads/JeffGeerling/2025-12-20 2 GPUs 1 Pi/2 GPUs 1 Pi [8X2Y62JGDCo].mkv", false, 7, ~U[2025-12-20 15:00:24Z]] 08:53:47.503 [debug] QUERY OK source="sources" db=0.4ms 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" = ?) [7] 08:53:47.504 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-12-18 14:01:47Z], 7] 08:53:47.505 [debug] QUERY OK source="media_items" db=1.0ms idle=4.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["RDMA over Thunderbolt support landed in macOS 26.2.\n\nIs it good for HPC? For Exo and LLMs? Find out in this video.\n\nResources (some links are affiliate links):\n\n - Mac Studio: https://www.apple.com/mac-studio/\n - Exo 1.0: https://exolabs.net\n - Apple MLX PR for Thunderbolt RDMA: https://github.com/ml-explore/mlx/pull/2808\n - M5 Neural Accelerator speedup: https://machinelearning.apple.com/research/exploring-llms-mlx-m5\n - DeskPi Rackmate TL1: https://amzn.to/4p5ek94\n - Tupavco mini-rack PDU: https://amzn.to/4j0DpAq\n\nDisclaimer: The Mac Studios used in this cluster are on loan from Apple for testing. They are not sponsoring this video, nor had any say in the contents. DeskPi sent the Rackmate TL1 used in the video for my testing, but they also had no say in the video contents. I always add the \"sponsored\" flag on my videos if I did not purchase the equipment being shown.\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - A rack-full of Macs\n02:01 - Putting together a cluster\n03:16 - The downsides of Thunderbolt\n05:09 - One is enough\n07:45 - Managing macOS in a cluster (vs Linux)\n08:37 - HPL and llama.cpp cluster performance\n09:30 - Enabling RDMA\n09:51 - Massive LLMs\n11:34 - RDMA over TB5 is great... when it works\n12:10 - EXO community and OSS\n12:51 - Apple could go harder\n13:30 - Jack of all trades, not just AI", "Apple didn't have to go this hard...", "6f762865-61b8-4168-a924-5ee90dc0697f", "https://www.youtube.com/watch?v=x4_RsUxRjKU", "x4_RsUxRjKU", false, 865, false, 3, "/downloads/JeffGeerling/2025-12-18 Apple didn't have to go this hard..#/Apple didn't have to go this hard... [x4_RsUxRjKU].mkv", false, false, 7, [], 98, ~U[2025-12-18 14:01:47Z], ~U[2025-12-24 08:53:47Z], ~U[2025-12-24 08:53:47Z], "RDMA over Thunderbolt support landed in macOS 26.2.\n\nIs it good for HPC? For Exo and LLMs? Find out in this video.\n\nResources (some links are affiliate links):\n\n - Mac Studio: https://www.apple.com/mac-studio/\n - Exo 1.0: https://exolabs.net\n - Apple MLX PR for Thunderbolt RDMA: https://github.com/ml-explore/mlx/pull/2808\n - M5 Neural Accelerator speedup: https://machinelearning.apple.com/research/exploring-llms-mlx-m5\n - DeskPi Rackmate TL1: https://amzn.to/4p5ek94\n - Tupavco mini-rack PDU: https://amzn.to/4j0DpAq\n\nDisclaimer: The Mac Studios used in this cluster are on loan from Apple for testing. They are not sponsoring this video, nor had any say in the contents. DeskPi sent the Rackmate TL1 used in the video for my testing, but they also had no say in the video contents. I always add the \"sponsored\" flag on my videos if I did not purchase the equipment being shown.\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - A rack-full of Macs\n02:01 - Putting together a cluster\n03:16 - The downsides of Thunderbolt\n05:09 - One is enough\n07:45 - Managing macOS in a cluster (vs Linux)\n08:37 - HPL and llama.cpp cluster performance\n09:30 - Enabling RDMA\n09:51 - Massive LLMs\n11:34 - RDMA over TB5 is great... when it works\n12:10 - EXO community and OSS\n12:51 - Apple could go harder\n13:30 - Jack of all trades, not just AI", "Apple didn't have to go this hard...", "https://www.youtube.com/watch?v=x4_RsUxRjKU", "x4_RsUxRjKU", 865, false, "/downloads/JeffGeerling/2025-12-18 Apple didn't have to go this hard..#/Apple didn't have to go this hard... [x4_RsUxRjKU].mkv", false, 7, ~U[2025-12-18 14:01:47Z]] 08:53:47.506 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [7] 08:53:47.507 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-12-12 15:00:58Z], 7] 08:53:47.508 [debug] QUERY OK source="media_items" db=0.9ms idle=3.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Raspberry Pi launched the CM0... in China. Let's take a look at this little stamp-sized Pi.\n\nResources mentioned in this video:\n\n - My test data and discussion: https://github.com/geerlingguy/sbc-reviews/issues/98\n - ED-CM0NANO from EDAtec: https://edatec.cn/docs/cm0nano/ds/\n - Raspberry Pi CM0 discussion on the Pi forum: https://forums.raspberrypi.com/viewtopic.php?t=386639\n - Order the ED-CM0NANO-10000 from DigiKey: https://www.digikey.com/en/products/detail/eda-technology-co-ltd/ED-CM0NANO-10000/28263891\n - Hackster article on CM0: https://www.hackster.io/news/raspberry-pi-unveils-the-18-compute-module-0-but-only-for-chinese-customers-for-now-913bf59ab6cc\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Castellated Computing\n01:01 - EDAtec's CM0NANO dev board\n01:34 - Flashing the CM0's slow eMMC\n02:02 - Chromium runs, but it's not for that\n02:42 - Why in China?", "You can't buy this Raspberry Pi (except in China)", "b959902a-6994-4aec-8c5d-f6ae667c9b0e", "https://www.youtube.com/watch?v=Q6FIcyhjoVo", "Q6FIcyhjoVo", false, 237, false, 4, "/downloads/JeffGeerling/2025-12-12 You can't buy this Raspberry Pi (except in China)/You can't buy this Raspberry Pi (except in China) [Q6FIcyhjoVo].mkv", false, false, 7, [], 98, ~U[2025-12-12 15:00:58Z], ~U[2025-12-24 08:53:47Z], ~U[2025-12-24 08:53:47Z], "Raspberry Pi launched the CM0... in China. Let's take a look at this little stamp-sized Pi.\n\nResources mentioned in this video:\n\n - My test data and discussion: https://github.com/geerlingguy/sbc-reviews/issues/98\n - ED-CM0NANO from EDAtec: https://edatec.cn/docs/cm0nano/ds/\n - Raspberry Pi CM0 discussion on the Pi forum: https://forums.raspberrypi.com/viewtopic.php?t=386639\n - Order the ED-CM0NANO-10000 from DigiKey: https://www.digikey.com/en/products/detail/eda-technology-co-ltd/ED-CM0NANO-10000/28263891\n - Hackster article on CM0: https://www.hackster.io/news/raspberry-pi-unveils-the-18-compute-module-0-but-only-for-chinese-customers-for-now-913bf59ab6cc\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Castellated Computing\n01:01 - EDAtec's CM0NANO dev board\n01:34 - Flashing the CM0's slow eMMC\n02:02 - Chromium runs, but it's not for that\n02:42 - Why in China?", "You can't buy this Raspberry Pi (except in China)", "https://www.youtube.com/watch?v=Q6FIcyhjoVo", "Q6FIcyhjoVo", 237, false, "/downloads/JeffGeerling/2025-12-12 You can't buy this Raspberry Pi (except in China)/You can't buy this Raspberry Pi (except in China) [Q6FIcyhjoVo].mkv", false, 7, ~U[2025-12-12 15:00:58Z]] 08:53:47.509 [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" = ?) [7] 08:53:47.509 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-12-08 15:00:52Z], 7] 08:53:47.511 [debug] QUERY OK source="media_items" db=1.0ms idle=3.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["It's a Framework 13, but there's no ordinary CPU inside...\n\nResources I mentioned in this video:\n\n - DeepComputing DC-ROMA II: https://store.deepcomputing.io/products/dc-roma-ai-pc-risc-v-mainboard-ii-for-framework-laptop-13\n - All my benchmarking data: https://github.com/geerlingguy/sbc-reviews/issues/82\n - Framework 13 with AMD Ryzen AI 5 340: https://frame.work/laptop13\n - SemiTO-V RP2350 GPIO Expansion Module: https://github.com/semitov/rp2350-gpio-card\n - SemiTO-V MCL Python to MicroPython tool: https://github.com/semitov/SemiTOV-MCL\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - This is not a Framework\n01:49 - Hardware\n04:02 - Strange architecture, seen before\n04:44 - RISC-V in a strange place right now\n05:28 - How is it as a laptop?\n07:18 - NPU and a missing 16 GB of RAM\n08:12 - Benchmarks\n09:20 - Why so inefficient?\n10:19 - A trip back to 2009\n11:49 - It's a Framework though\n12:23 - Upgrading to AMD\n13:04 - 6 cores demolishes 8 cores\n13:57 - Adding 2 more RISC-V cores (via expansion module)\n14:57 - Final thoughts", "This is not a Framework Laptop", "246afff8-58c7-453b-bde9-e2b7f59191cf", "https://www.youtube.com/watch?v=OkFfTK8S00c", "OkFfTK8S00c", false, 927, false, 5, "/downloads/JeffGeerling/2025-12-08 This is not a Framework Laptop/This is not a Framework Laptop [OkFfTK8S00c].mkv", false, false, 7, [], 98, ~U[2025-12-08 15:00:52Z], ~U[2025-12-24 08:53:47Z], ~U[2025-12-24 08:53:47Z], "It's a Framework 13, but there's no ordinary CPU inside...\n\nResources I mentioned in this video:\n\n - DeepComputing DC-ROMA II: https://store.deepcomputing.io/products/dc-roma-ai-pc-risc-v-mainboard-ii-for-framework-laptop-13\n - All my benchmarking data: https://github.com/geerlingguy/sbc-reviews/issues/82\n - Framework 13 with AMD Ryzen AI 5 340: https://frame.work/laptop13\n - SemiTO-V RP2350 GPIO Expansion Module: https://github.com/semitov/rp2350-gpio-card\n - SemiTO-V MCL Python to MicroPython tool: https://github.com/semitov/SemiTOV-MCL\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - This is not a Framework\n01:49 - Hardware\n04:02 - Strange architecture, seen before\n04:44 - RISC-V in a strange place right now\n05:28 - How is it as a laptop?\n07:18 - NPU and a missing 16 GB of RAM\n08:12 - Benchmarks\n09:20 - Why so inefficient?\n10:19 - A trip back to 2009\n11:49 - It's a Framework though\n12:23 - Upgrading to AMD\n13:04 - 6 cores demolishes 8 cores\n13:57 - Adding 2 more RISC-V cores (via expansion module)\n14:57 - Final thoughts", "This is not a Framework Laptop", "https://www.youtube.com/watch?v=OkFfTK8S00c", "OkFfTK8S00c", 927, false, "/downloads/JeffGeerling/2025-12-08 This is not a Framework Laptop/This is not a Framework Laptop [OkFfTK8S00c].mkv", false, 7, ~U[2025-12-08 15:00:52Z]] 08:53:47.511 [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" = ?) [7] 08:53:47.512 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-12-04 18:42:58Z], 7] 08:53:47.516 [debug] QUERY OK source="media_items" db=3.4ms idle=3.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Some of the articles and posts I referenced:\n\n - TeamGroup 64GB DDR5 Memory Kit I bought for $209.99 is now $649.99: https://www.microcenter.com/product/680461/teamgroup-t-create-expert-64gb-(2-x-32gb)-ddr5-6400-pc5-51200-cl34-dual-channel-desktop-memory-kit-ctced564g6400hc34bdc01-black\n - PC Part Picker Memory Pricing Trends: https://pcpartpicker.com/trends/price/memory/\n - Samsung can't buy Samsung memory: https://www.pcworld.com/article/2998935/ram-is-so-expensive-samsung-wont-even-sell-it-to-samsung.html\n - Micron stops selling Crucial memory and NVMes: https://investors.micron.com/news-releases/news-release-details/micron-announces-exit-crucial-consumer-business\n - Libre Computer's quote for LPDDR4 4GB RAM increasing beyond entire board BoM: https://x.com/librecomputer/status/1995592912063922578\n - Lenovo Stockpiles RAM for Laptops: https://www.pcworld.com/article/2986266/lenovo-stockpiles-ram-to-hopefully-keep-laptop-prices-down.html\n - Raspberry Pi memory-driven price rises: https://www.raspberrypi.com/news/1gb-raspberry-pi-5-now-available-at-45-and-memory-driven-price-rises/\n - Mono's future production runs impacted by LPDDR4 memory pricing: https://www.youtube.com/watch?v=AyueVGLT7qI\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff", "The RAM Shortage Comes for Us All", "205a7805-2613-4ae0-9962-84cab8953ce9", "https://www.youtube.com/watch?v=9rbz0akyLyQ", "9rbz0akyLyQ", false, 270, false, 6, "/downloads/JeffGeerling/2025-12-04 The RAM Shortage Comes for Us All/The RAM Shortage Comes for Us All [9rbz0akyLyQ].mkv", false, false, 7, [], 98, ~U[2025-12-04 18:42:58Z], ~U[2025-12-24 08:53:47Z], ~U[2025-12-24 08:53:47Z], "Some of the articles and posts I referenced:\n\n - TeamGroup 64GB DDR5 Memory Kit I bought for $209.99 is now $649.99: https://www.microcenter.com/product/680461/teamgroup-t-create-expert-64gb-(2-x-32gb)-ddr5-6400-pc5-51200-cl34-dual-channel-desktop-memory-kit-ctced564g6400hc34bdc01-black\n - PC Part Picker Memory Pricing Trends: https://pcpartpicker.com/trends/price/memory/\n - Samsung can't buy Samsung memory: https://www.pcworld.com/article/2998935/ram-is-so-expensive-samsung-wont-even-sell-it-to-samsung.html\n - Micron stops selling Crucial memory and NVMes: https://investors.micron.com/news-releases/news-release-details/micron-announces-exit-crucial-consumer-business\n - Libre Computer's quote for LPDDR4 4GB RAM increasing beyond entire board BoM: https://x.com/librecomputer/status/1995592912063922578\n - Lenovo Stockpiles RAM for Laptops: https://www.pcworld.com/article/2986266/lenovo-stockpiles-ram-to-hopefully-keep-laptop-prices-down.html\n - Raspberry Pi memory-driven price rises: https://www.raspberrypi.com/news/1gb-raspberry-pi-5-now-available-at-45-and-memory-driven-price-rises/\n - Mono's future production runs impacted by LPDDR4 memory pricing: https://www.youtube.com/watch?v=AyueVGLT7qI\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff", "The RAM Shortage Comes for Us All", "https://www.youtube.com/watch?v=9rbz0akyLyQ", "9rbz0akyLyQ", 270, false, "/downloads/JeffGeerling/2025-12-04 The RAM Shortage Comes for Us All/The RAM Shortage Comes for Us All [9rbz0akyLyQ].mkv", false, 7, ~U[2025-12-04 18:42:58Z]] 08:53:47.516 [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" = ?) [7] 08:53:47.517 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-11-26 23:45:17Z], 7] 08:53:47.518 [debug] QUERY OK source="media_items" db=0.7ms idle=5.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["It finally works!\n\nBlog post with all the details (and how you can try it): https://www.jeffgeerling.com/blog/2025/nvidia-graphics-cards-work-on-pi-5-and-rockchip\n\nAnd here's the open driver PR I mentioned in the video: https://github.com/NVIDIA/open-gpu-kernel-modules/pull/972\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff", "Nvidia GPU on Raspberry Pi—it WORKS!", "81a34adc-b113-4ccd-b7a8-812dbb1e701e", "https://www.youtube.com/watch?v=SPTYjF8qH0A", "SPTYjF8qH0A", false, 348, false, 7, "/downloads/JeffGeerling/2025-11-26 Nvidia GPU on Raspberry Pi—it WORKS!/Nvidia GPU on Raspberry Pi—it WORKS! [SPTYjF8qH0A].mkv", false, false, 7, [], 98, ~U[2025-11-26 23:45:17Z], ~U[2025-12-24 08:53:47Z], ~U[2025-12-24 08:53:47Z], "It finally works!\n\nBlog post with all the details (and how you can try it): https://www.jeffgeerling.com/blog/2025/nvidia-graphics-cards-work-on-pi-5-and-rockchip\n\nAnd here's the open driver PR I mentioned in the video: https://github.com/NVIDIA/open-gpu-kernel-modules/pull/972\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff", "Nvidia GPU on Raspberry Pi—it WORKS!", "https://www.youtube.com/watch?v=SPTYjF8qH0A", "SPTYjF8qH0A", 348, false, "/downloads/JeffGeerling/2025-11-26 Nvidia GPU on Raspberry Pi—it WORKS!/Nvidia GPU on Raspberry Pi—it WORKS! [SPTYjF8qH0A].mkv", false, 7, ~U[2025-11-26 23:45:17Z]] 08:53:47.519 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 08:53:47.519 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-11-21 15:01:47Z], 7] 08:53:47.521 [debug] QUERY OK source="media_items" db=0.8ms idle=3.1ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["It's a neat, portable Air Quality monitor, full of personality.\n\nBut is it worth $250?\n\nLinks to things I referenced in the video (some links are affiliate links):\n\n - Air Lab: https://networkedartifacts.com/airlab/\n - AirGradient One: https://www.airgradient.com/indoor/\n - Temtop M2000C 2nd Generation: https://amzn.to/3XGbpbs\n - CO2 study referenced in the video: https://pubmed.ncbi.nlm.nih.gov/23008272/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - A $250 portable air quality monitor\n01:14 - Versus AirGradient ONE\n02:06 - Setting up an AirGradient with Home Assistant\n05:36 - Setting up the Air Lab\n07:24 - Air Lab Console walkthrough\n11:28 - Stale air on a road trip\n13:02 - Air quality at an indoor convention\n13:40 - Battery life, Home Assistant integration\n14:05 - DIY or Buy\n15:18 - Bonus, the Temtop", "Are you sure that's air you're breathing?", "0c62dadb-0337-428b-8366-1c1d3e87c0b6", "https://www.youtube.com/watch?v=r21lvaw40nY", "r21lvaw40nY", false, 978, false, 8, "/downloads/JeffGeerling/2025-11-21 Are you sure that's air you're breathing?/Are you sure that's air you're breathing? [r21lvaw40nY].mkv", false, false, 7, [], 98, ~U[2025-11-21 15:01:47Z], ~U[2025-12-24 08:53:47Z], ~U[2025-12-24 08:53:47Z], "It's a neat, portable Air Quality monitor, full of personality.\n\nBut is it worth $250?\n\nLinks to things I referenced in the video (some links are affiliate links):\n\n - Air Lab: https://networkedartifacts.com/airlab/\n - AirGradient One: https://www.airgradient.com/indoor/\n - Temtop M2000C 2nd Generation: https://amzn.to/3XGbpbs\n - CO2 study referenced in the video: https://pubmed.ncbi.nlm.nih.gov/23008272/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - A $250 portable air quality monitor\n01:14 - Versus AirGradient ONE\n02:06 - Setting up an AirGradient with Home Assistant\n05:36 - Setting up the Air Lab\n07:24 - Air Lab Console walkthrough\n11:28 - Stale air on a road trip\n13:02 - Air quality at an indoor convention\n13:40 - Battery life, Home Assistant integration\n14:05 - DIY or Buy\n15:18 - Bonus, the Temtop", "Are you sure that's air you're breathing?", "https://www.youtube.com/watch?v=r21lvaw40nY", "r21lvaw40nY", 978, false, "/downloads/JeffGeerling/2025-11-21 Are you sure that's air you're breathing?/Are you sure that's air you're breathing? [r21lvaw40nY].mkv", false, 7, ~U[2025-11-21 15:01:47Z]] 08:53:47.521 [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" = ?) [7] 08:53:47.522 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-11-13 15:01:23Z], 7] 08:53:47.523 [debug] QUERY OK source="media_items" db=1.0ms idle=3.4ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["And you don't even have to recompile the Linux kernel!\n\nI purchased almost everything shown in this video, however, the Intel Arc Pro B50 was provided for testing by Intel, thus I'm marking this video as 'sponsored'. They did not pay me outside of providing the B50, nor did they have any say in the video's contents.\n\nThings mentioned in this video (some links are affiliate links):\n\n - Blog post with the latest guide for setup: https://www.jeffgeerling.com/blog/2025/all-intel-gpus-run-on-raspberry-pi-and-risc-v\n - Blog post on Resizeable BAR support: https://www.jeffgeerling.com/blog/2025/resizeable-bar-support-on-raspberry-pi\n - Minisforum DEG1 eGPU Dock: https://amzn.to/481EHao\n - JMT eGPU Dock: https://amzn.to/4oUZ4M9\n - chenyang OCuLink cable: https://amzn.to/47ZxWWF\n - Micro SATA Cables OCuLink to M.2 adapter with ReDriver: https://amzn.to/4nTtJse\n - Lian-Li 750W SFX PSU: https://amzn.to/3JG3Myv\n - Linux Kernel Mailing List patch for Intel on non-x86: https://lore.kernel.org/lkml/20250715061837.2144388-1-zhangzhijie@bosc.ac.cn/\n - Raspberry Pi OS Kernel PR for AMD and Intel GPUs: https://github.com/raspberrypi/linux/pull/7113\n - Full testing and results using the latest patches: https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/764\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Every Intel GPU\n00:51 - Physical connections and overcoming PCIe issues\n01:38 - You don't need to recompile Linux anymore\n03:09 - Black Mesa (the curse of the blinking cursor)\n03:55 - Resizeable BAR support\n04:27 - Performance: Vulkan, OpenGL, llama.cpp AI models\n05:26 - Compared to AMD\n05:56 - Partnering with RISC-V to go mainline", "Every Intel GPU runs on a Raspberry Pi", "53469ab5-a940-4fa1-8992-06ef09a2d088", "https://www.youtube.com/watch?v=ewDJpxQEGo4", "ewDJpxQEGo4", false, 410, false, 9, "/downloads/JeffGeerling/2025-11-13 Every Intel GPU runs on a Raspberry Pi/Every Intel GPU runs on a Raspberry Pi [ewDJpxQEGo4].mkv", false, false, 7, [], 98, ~U[2025-11-13 15:01:23Z], ~U[2025-12-24 08:53:47Z], ~U[2025-12-24 08:53:47Z], "And you don't even have to recompile the Linux kernel!\n\nI purchased almost everything shown in this video, however, the Intel Arc Pro B50 was provided for testing by Intel, thus I'm marking this video as 'sponsored'. They did not pay me outside of providing the B50, nor did they have any say in the video's contents.\n\nThings mentioned in this video (some links are affiliate links):\n\n - Blog post with the latest guide for setup: https://www.jeffgeerling.com/blog/2025/all-intel-gpus-run-on-raspberry-pi-and-risc-v\n - Blog post on Resizeable BAR support: https://www.jeffgeerling.com/blog/2025/resizeable-bar-support-on-raspberry-pi\n - Minisforum DEG1 eGPU Dock: https://amzn.to/481EHao\n - JMT eGPU Dock: https://amzn.to/4oUZ4M9\n - chenyang OCuLink cable: https://amzn.to/47ZxWWF\n - Micro SATA Cables OCuLink to M.2 adapter with ReDriver: https://amzn.to/4nTtJse\n - Lian-Li 750W SFX PSU: https://amzn.to/3JG3Myv\n - Linux Kernel Mailing List patch for Intel on non-x86: https://lore.kernel.org/lkml/20250715061837.2144388-1-zhangzhijie@bosc.ac.cn/\n - Raspberry Pi OS Kernel PR for AMD and Intel GPUs: https://github.com/raspberrypi/linux/pull/7113\n - Full testing and results using the latest patches: https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/764\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Every Intel GPU\n00:51 - Physical connections and overcoming PCIe issues\n01:38 - You don't need to recompile Linux anymore\n03:09 - Black Mesa (the curse of the blinking cursor)\n03:55 - Resizeable BAR support\n04:27 - Performance: Vulkan, OpenGL, llama.cpp AI models\n05:26 - Compared to AMD\n05:56 - Partnering with RISC-V to go mainline", "Every Intel GPU runs on a Raspberry Pi", "https://www.youtube.com/watch?v=ewDJpxQEGo4", "ewDJpxQEGo4", 410, false, "/downloads/JeffGeerling/2025-11-13 Every Intel GPU runs on a Raspberry Pi/Every Intel GPU runs on a Raspberry Pi [ewDJpxQEGo4].mkv", false, 7, ~U[2025-11-13 15:01:23Z]] 08:53:47.524 [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" = ?) [7] 08:53:47.525 [debug] QUERY OK source="media_items" db=0.5ms queue=0.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[2025-11-10 16:00:53Z], 7] 08:53:47.526 [debug] QUERY OK source="media_items" db=1.0ms idle=3.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Minisforum just launched the MS-R1, their first Arm workstation PC.\n\nWill it bring Arm into the homelab, in a big way? Or will it suffer the same fate as the Radxa Orion O6, let down by a power-hungry SoC? And will a dedicated GPU fit inside this tiny box?\n\nThings mentioned in this video (amzn.to links are affiliate links):\n\n - Minisforum MS-R1: https://s.minisforum.com/4hRFZbj\n - MS-R1 benchmarks and test data: https://github.com/geerlingguy/sbc-reviews/issues/89\n - Radxa Orion O6 review: https://www.youtube.com/watch?v=OMnCqmM-WKo\n - Abovetop Nvidia RTX A2000 SFF GPU: https://www.newegg.com/abovetop-Model-A2000laptop/p/1DW-00MF-00001\n - Intel Arc A310 ECO GPU: https://amzn.to/49Q3vn4\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Hardware overview\n01:47 - Cix's 12-core Arm SoC\n02:57 - Deeper problems\n03:55 - 10 Gbps Networking and AI inference\n04:55 - Installing a dGPU (RTX A2000)\n06:15 - A BIOS detour and AC Power Loss bug\n06:50 - Trying an Intel GPU (A310 ECO)\n07:20 - Installing Ubuntu and getting GPU acceleration\n08:40 - Arm Homelab in a box?", "Arm Homelab-in-a-Box – Minisforum MS-R1", "5a37fe09-44e8-44f7-83df-b8c7c2a28068", "https://www.youtube.com/watch?v=WXfd0rOOtkg", "WXfd0rOOtkg", false, 601, false, 10, "/downloads/JeffGeerling/2025-11-10 Arm Homelab-in-a-Box – Minisforum MS-R1/Arm Homelab-in-a-Box – Minisforum MS-R1 [WXfd0rOOtkg].mkv", false, false, 7, [], 98, ~U[2025-11-10 16:00:53Z], ~U[2025-12-24 08:53:47Z], ~U[2025-12-24 08:53:47Z], "Minisforum just launched the MS-R1, their first Arm workstation PC.\n\nWill it bring Arm into the homelab, in a big way? Or will it suffer the same fate as the Radxa Orion O6, let down by a power-hungry SoC? And will a dedicated GPU fit inside this tiny box?\n\nThings mentioned in this video (amzn.to links are affiliate links):\n\n - Minisforum MS-R1: https://s.minisforum.com/4hRFZbj\n - MS-R1 benchmarks and test data: https://github.com/geerlingguy/sbc-reviews/issues/89\n - Radxa Orion O6 review: https://www.youtube.com/watch?v=OMnCqmM-WKo\n - Abovetop Nvidia RTX A2000 SFF GPU: https://www.newegg.com/abovetop-Model-A2000laptop/p/1DW-00MF-00001\n - Intel Arc A310 ECO GPU: https://amzn.to/49Q3vn4\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Hardware overview\n01:47 - Cix's 12-core Arm SoC\n02:57 - Deeper problems\n03:55 - 10 Gbps Networking and AI inference\n04:55 - Installing a dGPU (RTX A2000)\n06:15 - A BIOS detour and AC Power Loss bug\n06:50 - Trying an Intel GPU (A310 ECO)\n07:20 - Installing Ubuntu and getting GPU acceleration\n08:40 - Arm Homelab in a box?", "Arm Homelab-in-a-Box – Minisforum MS-R1", "https://www.youtube.com/watch?v=WXfd0rOOtkg", "WXfd0rOOtkg", 601, false, "/downloads/JeffGeerling/2025-11-10 Arm Homelab-in-a-Box – Minisforum MS-R1/Arm Homelab-in-a-Box – Minisforum MS-R1 [WXfd0rOOtkg].mkv", false, 7, ~U[2025-11-10 16:00:53Z]] 08:53:47.527 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [7] 08:53:47.527 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-10-31 14:00:54Z], 7] 08:53:47.529 [debug] QUERY OK source="media_items" db=0.8ms idle=3.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Qualcomm and Arduino just launched the Uno Q, and it's... weird.\n\nArduino sent me a review unit to test, after I had already placed an order for a production unit. Both came in the same week, but I still like to disclose if any review equipment is sent for testing!\n\nMentioned in this video:\n\n - SBC Reviews - Uno Q: https://github.com/geerlingguy/sbc-reviews/issues/83\n - Arduino Uno Q: https://www.arduino.cc/product-uno-q\n - Radxa X4: https://radxa.com/products/x/x4/\n - Raspberry Pi 5: https://www.raspberrypi.com/products/raspberry-pi-5/\n - Arduino Yun: https://docs.arduino.cc/retired/boards/arduino-yun/\n - Electromaker video on Uno Q projects: https://www.youtube.com/watch?v=Zf99bvQbwf8\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - What is the Q?\n01:08 - Qualcomm Dragonwing and the App Lab\n01:51 - USB-C all the things\n02:55 - SBC Performance and efficiency\n03:57 - Compared to a Pi 5 and Radxa X4\n04:30 - Edge AI?\n05:28 - Qualcomm and Arduino and Open Source", "Arduino made a weird SBC", "3276f73d-9bea-4f7e-95fc-f40b5f7f379a", "https://www.youtube.com/watch?v=Vz3pD3_CDUE", "Vz3pD3_CDUE", false, 444, false, 11, "/downloads/JeffGeerling/2025-10-31 Arduino made a weird SBC/Arduino made a weird SBC [Vz3pD3_CDUE].mkv", false, false, 7, [], 98, ~U[2025-10-31 14:00:54Z], ~U[2025-12-24 08:53:47Z], ~U[2025-12-24 08:53:47Z], "Qualcomm and Arduino just launched the Uno Q, and it's... weird.\n\nArduino sent me a review unit to test, after I had already placed an order for a production unit. Both came in the same week, but I still like to disclose if any review equipment is sent for testing!\n\nMentioned in this video:\n\n - SBC Reviews - Uno Q: https://github.com/geerlingguy/sbc-reviews/issues/83\n - Arduino Uno Q: https://www.arduino.cc/product-uno-q\n - Radxa X4: https://radxa.com/products/x/x4/\n - Raspberry Pi 5: https://www.raspberrypi.com/products/raspberry-pi-5/\n - Arduino Yun: https://docs.arduino.cc/retired/boards/arduino-yun/\n - Electromaker video on Uno Q projects: https://www.youtube.com/watch?v=Zf99bvQbwf8\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - What is the Q?\n01:08 - Qualcomm Dragonwing and the App Lab\n01:51 - USB-C all the things\n02:55 - SBC Performance and efficiency\n03:57 - Compared to a Pi 5 and Radxa X4\n04:30 - Edge AI?\n05:28 - Qualcomm and Arduino and Open Source", "Arduino made a weird SBC", "https://www.youtube.com/watch?v=Vz3pD3_CDUE", "Vz3pD3_CDUE", 444, false, "/downloads/JeffGeerling/2025-10-31 Arduino made a weird SBC/Arduino made a weird SBC [Vz3pD3_CDUE].mkv", false, 7, ~U[2025-10-31 14:00:54Z]] 08:53:47.529 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=4.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 08:53:47.530 [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[2025-10-16 14:01:14Z], 7] 08:53:47.532 [debug] QUERY OK source="media_items" db=0.9ms idle=3.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Vintage Computer Festival Midwest 2025 was overwhelming (in a good way).\n\nI'll tell you my favorite experiences and interactions with the vintage tech community in this video.\n\nSome of the projects and products mentioned in this video:\n\n - VCF Midwest: https://www.vcfmw.org\n - yyzkevin PCMCIA Pico card: https://www.yyzkevin.ca/pico-pcmcia/\n - Open Source CRT analog board: https://github.com/tdaede/td-crt\n - Meshtastic 64 on C64: https://64jim64.blogspot.com/2025/09/meshtastic-64-meshtastic-radio-for.html\n - Juicy Crumb Systems: https://juicycrumb.com\n - Mac84 Video on Personics View Control System: https://www.youtube.com/watch?v=41jCujsrHVg\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Old computers, new tricks in Chicago\n00:54 - Nostalgia for old Macs\n02:00 - The free pile, and Jeff is easily distracted\n02:47 - Open source CRT analog board replacement\n03:41 - An unexpected meeting at RCV's booth\n04:21 - Cursed input devices\n05:07 - Meshtastic on a C64\n05:54 - My timing sense tingled\n06:57 - Side quest - BlueSCSI disk rescue\n08:20 - Relay computers, 70 lb HDDs, and ESMs\n09:38 - Preventing e-waste, and analog DRM\n10:42 - The anti-AI", "We used to actually own our computers", "abcf17b2-ea69-49b4-b56f-d17c0b7da3ac", "https://www.youtube.com/watch?v=hF0NKvmQmVA", "hF0NKvmQmVA", false, 720, false, 12, "/downloads/JeffGeerling/2025-10-16 We used to actually own our computers/We used to actually own our computers [hF0NKvmQmVA].mkv", false, false, 7, [], 98, ~U[2025-10-16 14:01:14Z], ~U[2025-12-24 08:53:47Z], ~U[2025-12-24 08:53:47Z], "Vintage Computer Festival Midwest 2025 was overwhelming (in a good way).\n\nI'll tell you my favorite experiences and interactions with the vintage tech community in this video.\n\nSome of the projects and products mentioned in this video:\n\n - VCF Midwest: https://www.vcfmw.org\n - yyzkevin PCMCIA Pico card: https://www.yyzkevin.ca/pico-pcmcia/\n - Open Source CRT analog board: https://github.com/tdaede/td-crt\n - Meshtastic 64 on C64: https://64jim64.blogspot.com/2025/09/meshtastic-64-meshtastic-radio-for.html\n - Juicy Crumb Systems: https://juicycrumb.com\n - Mac84 Video on Personics View Control System: https://www.youtube.com/watch?v=41jCujsrHVg\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Old computers, new tricks in Chicago\n00:54 - Nostalgia for old Macs\n02:00 - The free pile, and Jeff is easily distracted\n02:47 - Open source CRT analog board replacement\n03:41 - An unexpected meeting at RCV's booth\n04:21 - Cursed input devices\n05:07 - Meshtastic on a C64\n05:54 - My timing sense tingled\n06:57 - Side quest - BlueSCSI disk rescue\n08:20 - Relay computers, 70 lb HDDs, and ESMs\n09:38 - Preventing e-waste, and analog DRM\n10:42 - The anti-AI", "We used to actually own our computers", "https://www.youtube.com/watch?v=hF0NKvmQmVA", "hF0NKvmQmVA", 720, false, "/downloads/JeffGeerling/2025-10-16 We used to actually own our computers/We used to actually own our computers [hF0NKvmQmVA].mkv", false, 7, ~U[2025-10-16 14:01:14Z]] 08:53:47.533 [debug] QUERY OK source="sources" db=0.4ms 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" = ?) [7] 08:53:47.533 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-10-07 13:00:32Z], 7] 08:53:47.534 [debug] QUERY OK source="media_items" db=0.8ms idle=4.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Who saw THIS coming? Qualcomm just announced their intent to acquire Arduino. And they're making a new SBC, the Uno Q!\n\nLearn more in this video, and read their official press release for more info: https://www.qualcomm.com/news/releases/2025/10/qualcomm-to-acquire-arduino-accelerating-developers--access-to-i\n\nSome things I mentioned in this video:\n\n - Arduino Uno Q: https://www.arduino.cc/product-uno-q\n - Arduino Uno R3: https://amzn.to/3WpYx8J\n - Arduino Uno R4 WiFi: https://amzn.to/4nZr9RW\n - My first Arduino blinky repo: https://github.com/geerlingguy/blinky\n - Polanduino: https://github.com/mfolejewski/Polanduino\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Qualcomm acquires Arduino\n01:09 - Why does Qualcomm want Arduino?\n02:12 - A new joint SBC: Arduino Uno Q\n02:52 - Two big questions\n03:50 - Still open source?\n04:44 - The value of their first SBC", "Qualcomm just bought Arduino, and they're making a tiny computer", "fbf3cf2d-b762-488e-8d4c-7b937c6b230d", "https://www.youtube.com/watch?v=CfKX616-nsE", "CfKX616-nsE", false, 337, false, 13, "/downloads/JeffGeerling/2025-10-07 Qualcomm just bought Arduino, and they're making a tiny computer/Qualcomm just bought Arduino, and they're making a tiny computer [CfKX616-nsE].mkv", false, false, 7, [], 98, ~U[2025-10-07 13:00:32Z], ~U[2025-12-24 08:53:47Z], ~U[2025-12-24 08:53:47Z], "Who saw THIS coming? Qualcomm just announced their intent to acquire Arduino. And they're making a new SBC, the Uno Q!\n\nLearn more in this video, and read their official press release for more info: https://www.qualcomm.com/news/releases/2025/10/qualcomm-to-acquire-arduino-accelerating-developers--access-to-i\n\nSome things I mentioned in this video:\n\n - Arduino Uno Q: https://www.arduino.cc/product-uno-q\n - Arduino Uno R3: https://amzn.to/3WpYx8J\n - Arduino Uno R4 WiFi: https://amzn.to/4nZr9RW\n - My first Arduino blinky repo: https://github.com/geerlingguy/blinky\n - Polanduino: https://github.com/mfolejewski/Polanduino\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Qualcomm acquires Arduino\n01:09 - Why does Qualcomm want Arduino?\n02:12 - A new joint SBC: Arduino Uno Q\n02:52 - Two big questions\n03:50 - Still open source?\n04:44 - The value of their first SBC", "Qualcomm just bought Arduino, and they're making a tiny computer", "https://www.youtube.com/watch?v=CfKX616-nsE", "CfKX616-nsE", 337, false, "/downloads/JeffGeerling/2025-10-07 Qualcomm just bought Arduino, and they're making a tiny computer/Qualcomm just bought Arduino, and they're making a tiny computer [CfKX616-nsE].mkv", false, 7, ~U[2025-10-07 13:00:32Z]] 08:53:47.535 [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" = ?) [7] 08:53:47.536 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-09-25 07:00:24Z], 7] 08:53:47.537 [debug] QUERY OK source="media_items" db=1.0ms idle=3.5ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The Raspberry Pi 500+ adds on things missing from the regular 500. But at what cost?\n\nAnd with full RGB... is it any better at gaming? What if we throw in an eGPU?\n\nMentioned in this video:\n\n - Raspberry Pi 500+: https://www.raspberrypi.com/products/raspberry-pi-500-plus/\n - Raspberry Pi Monitor: https://www.raspberrypi.com/products/raspberry-pi-monitor/\n - Lumafield scans:\n - Pi 500+ 'top' (right side): https://voyager.lumafield.com/project/79ccb3a4-21a0-40eb-ba95-21057900883f\n - Pi 500+ 'bottom' (left side): https://voyager.lumafield.com/project/0506155d-2d8f-4a49-832b-104d215999c9\n - ZX Spectrum Video by Adrian's Digital Basement: https://www.youtube.com/watch?v=RMG_StQ67kA\n\nAnd here are all the parts I used in testing the Pi 500+ (some links are affiliate links):\n\n - RIITOP NVMe to USB Docking Station: https://amzn.to/46yvPaC\n - JMT M.2 M-Key to OCuLink PCIe Dock: https://amzn.to/4pCCokS\n - chenyang SFF-8611 OCuLink Cable: https://amzn.to/481Otdn\n - Lian Li 750W SFX Power Supply: https://amzn.to/3Ied0kV\n - AVerMedia GC513 Live Gamer external Capture Card: https://amzn.to/3Vyz78C\n - Mechanical keyboard key cap puller: https://amzn.to/3KiuJZ0\n - dagaladoo Low Profile PBT Keycaps: https://amzn.to/3KjOCyX\n - KBDiy 9009 Doys Low Profile PBT Keycaps: https://amzn.to/4mulpyJ\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Mechanical keyboard, NVMe, 16 GB RAM, $200\n01:57 - Performance\n02:52 - Looking inside with Lumafield CT scans\n04:36 - Cracking the case\n05:20 - Oculink and eGPU Docks\n11:02 - AMD RX 7900 XT on a Pi 500+\n12:27 - We're gaming! And private LLM'ing!\n13:53 - How's the keyboard?\n14:49 - Alternate keycaps and mechanical keyboarding\n18:31 - Keyboard configuration, RGB, and an easter egg\n19:55 - Is it worth $110 more?", "Raspberry Pi 500+: NOW we're gaming!", "0d2579bd-e875-48b2-8ac8-b2ec7e6271b5", "https://www.youtube.com/watch?v=Dv3RRAx7G6E", "Dv3RRAx7G6E", false, 1255, false, 14, "/downloads/JeffGeerling/2025-09-25 Raspberry Pi 500+: NOW we're gaming!/Raspberry Pi 500+: NOW we're gaming! [Dv3RRAx7G6E].mkv", false, false, 7, [], 98, ~U[2025-09-25 07:00:24Z], ~U[2025-12-24 08:53:47Z], ~U[2025-12-24 08:53:47Z], "The Raspberry Pi 500+ adds on things missing from the regular 500. But at what cost?\n\nAnd with full RGB... is it any better at gaming? What if we throw in an eGPU?\n\nMentioned in this video:\n\n - Raspberry Pi 500+: https://www.raspberrypi.com/products/raspberry-pi-500-plus/\n - Raspberry Pi Monitor: https://www.raspberrypi.com/products/raspberry-pi-monitor/\n - Lumafield scans:\n - Pi 500+ 'top' (right side): https://voyager.lumafield.com/project/79ccb3a4-21a0-40eb-ba95-21057900883f\n - Pi 500+ 'bottom' (left side): https://voyager.lumafield.com/project/0506155d-2d8f-4a49-832b-104d215999c9\n - ZX Spectrum Video by Adrian's Digital Basement: https://www.youtube.com/watch?v=RMG_StQ67kA\n\nAnd here are all the parts I used in testing the Pi 500+ (some links are affiliate links):\n\n - RIITOP NVMe to USB Docking Station: https://amzn.to/46yvPaC\n - JMT M.2 M-Key to OCuLink PCIe Dock: https://amzn.to/4pCCokS\n - chenyang SFF-8611 OCuLink Cable: https://amzn.to/481Otdn\n - Lian Li 750W SFX Power Supply: https://amzn.to/3Ied0kV\n - AVerMedia GC513 Live Gamer external Capture Card: https://amzn.to/3Vyz78C\n - Mechanical keyboard key cap puller: https://amzn.to/3KiuJZ0\n - dagaladoo Low Profile PBT Keycaps: https://amzn.to/3KjOCyX\n - KBDiy 9009 Doys Low Profile PBT Keycaps: https://amzn.to/4mulpyJ\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Mechanical keyboard, NVMe, 16 GB RAM, $200\n01:57 - Performance\n02:52 - Looking inside with Lumafield CT scans\n04:36 - Cracking the case\n05:20 - Oculink and eGPU Docks\n11:02 - AMD RX 7900 XT on a Pi 500+\n12:27 - We're gaming! And private LLM'ing!\n13:53 - How's the keyboard?\n14:49 - Alternate keycaps and mechanical keyboarding\n18:31 - Keyboard configuration, RGB, and an easter egg\n19:55 - Is it worth $110 more?", "Raspberry Pi 500+: NOW we're gaming!", "https://www.youtube.com/watch?v=Dv3RRAx7G6E", "Dv3RRAx7G6E", 1255, false, "/downloads/JeffGeerling/2025-09-25 Raspberry Pi 500+: NOW we're gaming!/Raspberry Pi 500+: NOW we're gaming! [Dv3RRAx7G6E].mkv", false, 7, ~U[2025-09-25 07:00:24Z]] 08:53:47.538 [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" = ?) [7] 08:53:47.539 [debug] QUERY OK source="media_items" db=0.4ms 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[2025-09-19 14:00:14Z], 7] 08:53:47.541 [debug] QUERY OK source="media_items" db=1.3ms idle=3.8ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["It's been a while. Some Kickstarters take time.\n\nWhat do you think about doing the same thing 10 times in a row, over and over? If that's your jam, build a cluster like I did in this video!\n\nIf you want to replicate the Compute Blade Cluster, here are all the parts I used (some links are affiliate links):\n\n - Compute Blade DEV: https://www.pishop.us/product/compute-blade-dev/\n - Compute Blade Standard Fan Unit: https://www.pishop.us/product/fansta-1v1-0/\n - Compute Blade 10\" 3D Print Rackmount: https://github.com/Uptime-Lab/compute-blade/tree/main/models/bladerunner\n - Raspberry Pi CM5 16GB (CM5016000): https://www.pishop.us/product/raspberry-pi-compute-module-5-16gb-ram-lite-cm5016000/\n - GLOTRENDS Aluminum CM5 Heatsink: https://amzn.to/45YACBV\n - Patriot P300 256GB NVMe SSD 10-pack: https://amzn.to/4lPJ0JC\n - GigaPlus 2.5 Gbps 10 port PoE+ switch: https://amzn.to/3UNOwSd\n - GigaPlus 10\" Rack Mount 3D Print ears: https://www.printables.com/model/1215585-unified-10-rack-gigaplus-switch-mounting-ears\n - Monoprice Cat6A SlimRun 6\" Cat6 patch cables (10 pack): https://amzn.to/4fX1gzr\n - ioplex SFP+ Twinax DAC patch cable: https://amzn.to/47UlPKX\n - DeskPi RackMate TT: https://amzn.to/3UUjCHP\n\nOther resources mentioned in the video:\n\n - My older Compute Blade video: https://www.youtube.com/watch?v=rKDGlpnP-vE\n - Xerxes Pi Kickstarter: https://www.kickstarter.com/projects/1907647187/small-board-big-possibilities-xerxes-pi\n - Xerxes Pi testing: https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/753\n - Unredacted Labs' Tor exit cluster: https://unredacted.org/blog/2025/05/unredacted-labs/\n - World's Largest Pi Cluster at UC Santa Barbara: https://www.independent.com/2025/04/29/worlds-biggest-raspberry-pi-cluster-is-now-at-uc-santa-barbara/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - 2 years 2 long\n00:32 - Another blade\n01:30 - Unboxing a cluster\n03:06 - Assembling one of 10\n06:11 - A bandolier of microSD cards\n07:16 - Assembling blades 2-10\n08:16 - Next steps - fans and storage\n10:17 - Flashing NVMe drives\n11:00 - Only Fan Units\n12:45 - They all just... disappeared\n14:33 - Spending another $200\n15:45 - Cluster benchmarks: HPL\n16:23 - Spending another $70\n17:03 - Framework cluster vs Pi cluster\n18:12 - AI clustering (down one node)\n19:26 - llama.cpp is totally RPC\n20:54 - Exo and Distributed Llama\n22:09 - Blade (the movie) vs blade (the compute)", "I regret building a $3000 Pi AI Cluster", "f68a0247-c3ac-4cdf-9de6-340709d9b5da", "https://www.youtube.com/watch?v=8SiB-bNyP5E", "8SiB-bNyP5E", false, 1429, false, 15, "/downloads/JeffGeerling/2025-09-19 I regret building a $3000 Pi AI Cluster/I regret building a $3000 Pi AI Cluster [8SiB-bNyP5E].mkv", false, false, 7, [], 98, ~U[2025-09-19 14:00:14Z], ~U[2025-12-24 08:53:47Z], ~U[2025-12-24 08:53:47Z], "It's been a while. Some Kickstarters take time.\n\nWhat do you think about doing the same thing 10 times in a row, over and over? If that's your jam, build a cluster like I did in this video!\n\nIf you want to replicate the Compute Blade Cluster, here are all the parts I used (some links are affiliate links):\n\n - Compute Blade DEV: https://www.pishop.us/product/compute-blade-dev/\n - Compute Blade Standard Fan Unit: https://www.pishop.us/product/fansta-1v1-0/\n - Compute Blade 10\" 3D Print Rackmount: https://github.com/Uptime-Lab/compute-blade/tree/main/models/bladerunner\n - Raspberry Pi CM5 16GB (CM5016000): https://www.pishop.us/product/raspberry-pi-compute-module-5-16gb-ram-lite-cm5016000/\n - GLOTRENDS Aluminum CM5 Heatsink: https://amzn.to/45YACBV\n - Patriot P300 256GB NVMe SSD 10-pack: https://amzn.to/4lPJ0JC\n - GigaPlus 2.5 Gbps 10 port PoE+ switch: https://amzn.to/3UNOwSd\n - GigaPlus 10\" Rack Mount 3D Print ears: https://www.printables.com/model/1215585-unified-10-rack-gigaplus-switch-mounting-ears\n - Monoprice Cat6A SlimRun 6\" Cat6 patch cables (10 pack): https://amzn.to/4fX1gzr\n - ioplex SFP+ Twinax DAC patch cable: https://amzn.to/47UlPKX\n - DeskPi RackMate TT: https://amzn.to/3UUjCHP\n\nOther resources mentioned in the video:\n\n - My older Compute Blade video: https://www.youtube.com/watch?v=rKDGlpnP-vE\n - Xerxes Pi Kickstarter: https://www.kickstarter.com/projects/1907647187/small-board-big-possibilities-xerxes-pi\n - Xerxes Pi testing: https://github.com/geerlingguy/raspberry-pi-pcie-devices/issues/753\n - Unredacted Labs' Tor exit cluster: https://unredacted.org/blog/2025/05/unredacted-labs/\n - World's Largest Pi Cluster at UC Santa Barbara: https://www.independent.com/2025/04/29/worlds-biggest-raspberry-pi-cluster-is-now-at-uc-santa-barbara/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - 2 years 2 long\n00:32 - Another blade\n01:30 - Unboxing a cluster\n03:06 - Assembling one of 10\n06:11 - A bandolier of microSD cards\n07:16 - Assembling blades 2-10\n08:16 - Next steps - fans and storage\n10:17 - Flashing NVMe drives\n11:00 - Only Fan Units\n12:45 - They all just... disappeared\n14:33 - Spending another $200\n15:45 - Cluster benchmarks: HPL\n16:23 - Spending another $70\n17:03 - Framework cluster vs Pi cluster\n18:12 - AI clustering (down one node)\n19:26 - llama.cpp is totally RPC\n20:54 - Exo and Distributed Llama\n22:09 - Blade (the movie) vs blade (the compute)", "I regret building a $3000 Pi AI Cluster", "https://www.youtube.com/watch?v=8SiB-bNyP5E", "8SiB-bNyP5E", 1429, false, "/downloads/JeffGeerling/2025-09-19 I regret building a $3000 Pi AI Cluster/I regret building a $3000 Pi AI Cluster [8SiB-bNyP5E].mkv", false, 7, ~U[2025-09-19 14:00:14Z]] 08:53:47.541 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [7] 08:53:47.542 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-09-12 14:01:24Z], 7] 08:53:47.543 [debug] QUERY OK source="media_items" db=1.0ms idle=4.0ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["The number of Raspberry Pis orbiting the earth is about to increase.\n\nThanks to everyone who helped me make this video, over the past year! I learned a LOT (especially how much I don't know) about CubeSats, Ground Stations, amateur radio for space, and more.\n\nMentioned in this video:\n\n - SilverSat: https://silversat.org\n - Build a CubeSat: https://www.youtube.com/@buildacubesat\n - CubeSat TEMPEST: https://ethoslabs.space\n - Tim Fowler's CubeSat Collection on Level 2 Jeff: https://www.youtube.com/watch?v=woO0w92YuC0\n - Saveitforparts: https://www.youtube.com/@saveitforparts\n - RASCube: https://www.robinson-aerospace.com\n - MySat: https://www.mysatkit.com\n - GASPACS: https://artsci.usu.edu/physics/gas/projects/gaspacs\n - Mark Rober's SatGus: https://space.crunchlabs.com\n - Astro Pi: https://astro-pi.org\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Pis in Space!\n01:14 - CubeSat 101\n04:08 - Engineering challenges\n06:48 - MySat\n07:47 - RASCube\n08:43 - Build a CubeSat\n09:16 - CubeSat T.E.M.P.E.S.T.\n11:04 - SilverSat\n12:27 - Dave and Leticia\n15:10 - CubeSat Launch Initiative\n17:09 - The mission is just beginning\n18:14 - Why Raspberry Pi?\n19:49 - Pi security on orbit\n21:12 - Radio communications\n22:42 - Tracking sats from Earth with saveitforparts\n26:16 - What frequency?", "PIS IN SPACE!", "e525b46b-fb80-4f2c-9371-c9bec89d2526", "https://www.youtube.com/watch?v=qvN3sE2Nv4U", "qvN3sE2Nv4U", false, 1703, false, 16, "/downloads/JeffGeerling/2025-09-12 PIS IN SPACE!/PIS IN SPACE! [qvN3sE2Nv4U].mkv", false, false, 7, [], 98, ~U[2025-09-12 14:01:24Z], ~U[2025-12-24 08:53:47Z], ~U[2025-12-24 08:53:47Z], "The number of Raspberry Pis orbiting the earth is about to increase.\n\nThanks to everyone who helped me make this video, over the past year! I learned a LOT (especially how much I don't know) about CubeSats, Ground Stations, amateur radio for space, and more.\n\nMentioned in this video:\n\n - SilverSat: https://silversat.org\n - Build a CubeSat: https://www.youtube.com/@buildacubesat\n - CubeSat TEMPEST: https://ethoslabs.space\n - Tim Fowler's CubeSat Collection on Level 2 Jeff: https://www.youtube.com/watch?v=woO0w92YuC0\n - Saveitforparts: https://www.youtube.com/@saveitforparts\n - RASCube: https://www.robinson-aerospace.com\n - MySat: https://www.mysatkit.com\n - GASPACS: https://artsci.usu.edu/physics/gas/projects/gaspacs\n - Mark Rober's SatGus: https://space.crunchlabs.com\n - Astro Pi: https://astro-pi.org\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - Pis in Space!\n01:14 - CubeSat 101\n04:08 - Engineering challenges\n06:48 - MySat\n07:47 - RASCube\n08:43 - Build a CubeSat\n09:16 - CubeSat T.E.M.P.E.S.T.\n11:04 - SilverSat\n12:27 - Dave and Leticia\n15:10 - CubeSat Launch Initiative\n17:09 - The mission is just beginning\n18:14 - Why Raspberry Pi?\n19:49 - Pi security on orbit\n21:12 - Radio communications\n22:42 - Tracking sats from Earth with saveitforparts\n26:16 - What frequency?", "PIS IN SPACE!", "https://www.youtube.com/watch?v=qvN3sE2Nv4U", "qvN3sE2Nv4U", 1703, false, "/downloads/JeffGeerling/2025-09-12 PIS IN SPACE!/PIS IN SPACE! [qvN3sE2Nv4U].mkv", false, 7, ~U[2025-09-12 14:01:24Z]] 08:53:47.544 [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" = ?) [7] 08:53:47.544 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-09-04 14:01:11Z], 7] 08:53:47.546 [debug] QUERY OK source="media_items" db=1.0ms idle=3.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["I'm just a guy who drives a car.\n\nMentioned in this video:\n\n - Electric Car GitHub repo: https://github.com/geerlingguy/electric-car\n - Level 1 J1772 charger (Lectron): https://amzn.to/3HIt2Tx\n - Level 2 J1772 charger (Grizzl-E): https://amzn.to/4k0tHwX\n - Level 3 CCS1 to CHAdeMO adapter (A2Z): https://a2zevshop.com/products/ccs1-to-chademo\n - LeLink 2 OBD-II BLE dongle: https://amzn.to/45GYUls\n - LeafSpy Pro App: https://leafspy.com/\n - CarlinKit 5.0 Wireless CarPlay/Android Auto adapter: https://amzn.to/3SW9AVH\n - VIOFO A119 Mini Dashcam: https://amzn.to/4n8HqEB\n - Dongar wiring harness adapter (for dashcam): https://amzn.to/44hbi9f\n - Technology Connections video on car chargers: https://www.youtube.com/watch?v=W96a8svXo14\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - The cheapest used EV\n01:49 - Range anxiety, off the lot\n02:37 - Fixing problems on my new old car\n04:39 - Charging was more confusing than I expected\n06:42 - Modern car design frustrations\n09:01 - An embarassing car wash\n11:06 - Batteries and CHAdeMO cost me $1000\n14:00 - Range anxiety is overrated (mostly)\n15:06 - Things I love: one-pedal driving\n17:06 - Buttons are good!\n18:28 - Maintenance and tire wear\n19:29 - Cheap EV, not cheap car\n20:10 - Range anxiety is real\n21:52 - Fast charging is harder than gas/petrol\n25:35 - Fit for me, maybe not for thee", "Do I regret buying the cheapest EV?", "454bb61a-73d7-4cda-8cd6-a945c91e7533", "https://www.youtube.com/watch?v=hQQtFnLefqw", "hQQtFnLefqw", false, 1555, false, 17, "/downloads/JeffGeerling/2025-09-04 Do I regret buying the cheapest EV?/Do I regret buying the cheapest EV? [hQQtFnLefqw].mkv", false, false, 7, [], 98, ~U[2025-09-04 14:01:11Z], ~U[2025-12-24 08:53:47Z], ~U[2025-12-24 08:53:47Z], "I'm just a guy who drives a car.\n\nMentioned in this video:\n\n - Electric Car GitHub repo: https://github.com/geerlingguy/electric-car\n - Level 1 J1772 charger (Lectron): https://amzn.to/3HIt2Tx\n - Level 2 J1772 charger (Grizzl-E): https://amzn.to/4k0tHwX\n - Level 3 CCS1 to CHAdeMO adapter (A2Z): https://a2zevshop.com/products/ccs1-to-chademo\n - LeLink 2 OBD-II BLE dongle: https://amzn.to/45GYUls\n - LeafSpy Pro App: https://leafspy.com/\n - CarlinKit 5.0 Wireless CarPlay/Android Auto adapter: https://amzn.to/3SW9AVH\n - VIOFO A119 Mini Dashcam: https://amzn.to/4n8HqEB\n - Dongar wiring harness adapter (for dashcam): https://amzn.to/44hbi9f\n - Technology Connections video on car chargers: https://www.youtube.com/watch?v=W96a8svXo14\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nContents:\n\n00:00 - The cheapest used EV\n01:49 - Range anxiety, off the lot\n02:37 - Fixing problems on my new old car\n04:39 - Charging was more confusing than I expected\n06:42 - Modern car design frustrations\n09:01 - An embarassing car wash\n11:06 - Batteries and CHAdeMO cost me $1000\n14:00 - Range anxiety is overrated (mostly)\n15:06 - Things I love: one-pedal driving\n17:06 - Buttons are good!\n18:28 - Maintenance and tire wear\n19:29 - Cheap EV, not cheap car\n20:10 - Range anxiety is real\n21:52 - Fast charging is harder than gas/petrol\n25:35 - Fit for me, maybe not for thee", "Do I regret buying the cheapest EV?", "https://www.youtube.com/watch?v=hQQtFnLefqw", "hQQtFnLefqw", 1555, false, "/downloads/JeffGeerling/2025-09-04 Do I regret buying the cheapest EV?/Do I regret buying the cheapest EV? [hQQtFnLefqw].mkv", false, 7, ~U[2025-09-04 14:01:11Z]] 08:53:47.547 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [7] 08:53:47.547 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-08-28 14:01:00Z], 7] 08:53:47.549 [debug] QUERY OK source="media_items" db=0.9ms idle=3.9ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Finally, TrueNAS runs on a Raspberry Pi—or any other Arm server with UEFI support!\n\nFULL instructions here: https://www.jeffgeerling.com/blog/2025/how-install-truenas-on-raspberry-pi\n\nMentioned in this video:\n\n - Joel0's TrueNAS on Arm thread: https://forums.truenas.com/t/truenas-on-arm-now-available/49160\n - Links to all the TrueNAS on Arm resources: https://github.com/joel0-truenas/truenas-on-arm/issues/5\n - My arm-nas GitHub project: https://github.com/geerlingguy/arm-nas\n - HL15 Arm ZFS server: https://www.youtube.com/watch?v=Hz5k5WgTkcc\n - Raspberry Pi SATA ZFS server: https://www.youtube.com/watch?v=l30sADfDiM8\n - Homelabs Pi Storage NAS project: https://homepinas.com/en/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nThe Homelabs Pi Server was sent to me by a member of Homelabs Club for testing, and following my typical policy, I am thus marking this video as 'sponsored'. No money exchanged hands, and nobody had any say in the content of this video besides me.\n\nContents:\n\n00:00 - TrueNAS comes to Arm\n01:21 - The UEFI problem\n02:03 - Adding UEFI to Raspberry Pi\n03:24 - Install TrueNAS on Pi\n05:34 - Real-world Pi NAS - HomePiNAS\n06:17 - ZFS on Pi NAS\n06:50 - Should you do it?", "TrueNAS on a custom Raspberry Pi NAS", "ba01cdc6-79ff-4d84-9c5a-8774913d8679", "https://www.youtube.com/watch?v=XvaXemGDSpk", "XvaXemGDSpk", false, 438, false, 18, "/downloads/JeffGeerling/2025-08-28 TrueNAS on a custom Raspberry Pi NAS/TrueNAS on a custom Raspberry Pi NAS [XvaXemGDSpk].mkv", false, false, 7, [], 98, ~U[2025-08-28 14:01:00Z], ~U[2025-12-24 08:53:47Z], ~U[2025-12-24 08:53:47Z], "Finally, TrueNAS runs on a Raspberry Pi—or any other Arm server with UEFI support!\n\nFULL instructions here: https://www.jeffgeerling.com/blog/2025/how-install-truenas-on-raspberry-pi\n\nMentioned in this video:\n\n - Joel0's TrueNAS on Arm thread: https://forums.truenas.com/t/truenas-on-arm-now-available/49160\n - Links to all the TrueNAS on Arm resources: https://github.com/joel0-truenas/truenas-on-arm/issues/5\n - My arm-nas GitHub project: https://github.com/geerlingguy/arm-nas\n - HL15 Arm ZFS server: https://www.youtube.com/watch?v=Hz5k5WgTkcc\n - Raspberry Pi SATA ZFS server: https://www.youtube.com/watch?v=l30sADfDiM8\n - Homelabs Pi Storage NAS project: https://homepinas.com/en/\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://www.redshirtjeff.com\n2nd Channel: https://www.youtube.com/@GeerlingEngineering\n3rd Channel: https://www.youtube.com/@Level2Jeff\n\nThe Homelabs Pi Server was sent to me by a member of Homelabs Club for testing, and following my typical policy, I am thus marking this video as 'sponsored'. No money exchanged hands, and nobody had any say in the content of this video besides me.\n\nContents:\n\n00:00 - TrueNAS comes to Arm\n01:21 - The UEFI problem\n02:03 - Adding UEFI to Raspberry Pi\n03:24 - Install TrueNAS on Pi\n05:34 - Real-world Pi NAS - HomePiNAS\n06:17 - ZFS on Pi NAS\n06:50 - Should you do it?", "TrueNAS on a custom Raspberry Pi NAS", "https://www.youtube.com/watch?v=XvaXemGDSpk", "XvaXemGDSpk", 438, false, "/downloads/JeffGeerling/2025-08-28 TrueNAS on a custom Raspberry Pi NAS/TrueNAS on a custom Raspberry Pi NAS [XvaXemGDSpk].mkv", false, 7, ~U[2025-08-28 14:01:00Z]] 08:53:47.549 [debug] QUERY OK source="sources" db=0.3ms 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" = ?) [7] 08:53:47.550 [debug] QUERY OK source="media_items" db=0.5ms 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[2025-08-22 14:00:18Z], 7] 08:53:47.552 [debug] QUERY OK source="media_items" db=1.0ms idle=3.6ms INSERT INTO "media_items" AS m0 ("description","title","uuid","original_url","media_id","prevent_download","duration_seconds","livestream","playlist_index","predicted_media_filepath","prevent_culling","short_form_content","source_id","subtitle_filepaths","upload_date_index","uploaded_at","inserted_at","updated_at") VALUES (?1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18) ON CONFLICT ("source_id","media_id") DO UPDATE SET "description" = ?, "title" = ?, "original_url" = ?, "media_id" = ?, "duration_seconds" = ?, "livestream" = ?, "predicted_media_filepath" = ?, "short_form_content" = ?, "source_id" = ?, "uploaded_at" = ? RETURNING "id" ["Taking it apart is usually a better option than turning it on.\n\nTrack all the work I'm doing on Retro Macs: https://github.com/geerlingguy/retro-computers\n\nAlso check out Infinite Mac—you can enjoy retro Mac software in the comfort of your browser, and not have to restore a 35 year old Mac like I did! https://infinitemac.org/\n\nParts list:\n\n - Console5 - Analog board (630-0395) caps: https://console5.com/store/macintosh-classic-analog-pcb-cap-kit.html\n - Console5 - Logic board tantalum caps: https://console5.com/store/macintosh-classic-smd-tantalum-main-pcb-cap-kit.html\n - Mac Memories - 2x 1MB SIMMs: https://www.ebay.com/itm/144565895077\n - MacBatt Internal CR2032 PRAM replacement: https://www.tindie.com/products/jurassicomp/macbatt-internal-cr2032-pram-macintosh-battery/\n\nSome videos referenced in this video:\n\n - Mac84 - Repairing a Sad Quadra 840AV: https://www.youtube.com/watch?v=LBgr5mdimRY\n - Peter Cetinski - RIFA AC Cap Blowup: https://www.youtube.com/watch?v=njbwdbcfXjc\n - iiiDIY Recapping 20th Anniversary Mac: https://youtu.be/mabH-YB6kn4?t=683\n\nMusic in this video by LOOK MUM NO COMPUTER: https://www.youtube.com/watch?v=M47dXmZUnBc\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://redshirtjeff.com\n2nd Channel: https://www.youtube.com/c/GeerlingEngineering\n\nContents:\n\n00:00 - Long screwdrivers and old computer problems\n03:18 - Tools of the trade\n05:09 - Cracking open the Mac\n07:41 - Breaking the anode, safely\n09:36 - Logic board removal\n11:06 - Analog board and CRT neck board removal\n12:50 - Recapping the Analog board\n18:08 - Recapping the Logic board\n21:29 - Tantalum caps, MacBatt, and 4 MB RAM upgrade\n23:02 - Re-assembling the Classic\n23:51 - First power\n25:53 - Computing like it's 1991\n28:45 - Revealing the build, reliving the memories\n30:41 - More Macs?", "Try not to kill yourself saving an old Macintosh", "72ebb4a3-12ab-4e94-8a5e-ea6c73be3394", "https://www.youtube.com/watch?v=779nru5udpQ", "779nru5udpQ", false, 1887, false, 19, "/downloads/JeffGeerling/2025-08-22 Try not to kill yourself saving an old Macintosh/Try not to kill yourself saving an old Macintosh [779nru5udpQ].mkv", false, false, 7, [], 97, ~U[2025-08-22 14:00:18Z], ~U[2025-12-24 08:53:47Z], ~U[2025-12-24 08:53:47Z], "Taking it apart is usually a better option than turning it on.\n\nTrack all the work I'm doing on Retro Macs: https://github.com/geerlingguy/retro-computers\n\nAlso check out Infinite Mac—you can enjoy retro Mac software in the comfort of your browser, and not have to restore a 35 year old Mac like I did! https://infinitemac.org/\n\nParts list:\n\n - Console5 - Analog board (630-0395) caps: https://console5.com/store/macintosh-classic-analog-pcb-cap-kit.html\n - Console5 - Logic board tantalum caps: https://console5.com/store/macintosh-classic-smd-tantalum-main-pcb-cap-kit.html\n - Mac Memories - 2x 1MB SIMMs: https://www.ebay.com/itm/144565895077\n - MacBatt Internal CR2032 PRAM replacement: https://www.tindie.com/products/jurassicomp/macbatt-internal-cr2032-pram-macintosh-battery/\n\nSome videos referenced in this video:\n\n - Mac84 - Repairing a Sad Quadra 840AV: https://www.youtube.com/watch?v=LBgr5mdimRY\n - Peter Cetinski - RIFA AC Cap Blowup: https://www.youtube.com/watch?v=njbwdbcfXjc\n - iiiDIY Recapping 20th Anniversary Mac: https://youtu.be/mabH-YB6kn4?t=683\n\nMusic in this video by LOOK MUM NO COMPUTER: https://www.youtube.com/watch?v=M47dXmZUnBc\n\nSupport me on Patreon: https://www.patreon.com/geerlingguy\nSponsor me on GitHub: https://github.com/sponsors/geerlingguy\nMerch: https://redshirtjeff.com\n2nd Channel: https://www.youtube.com/c/GeerlingEngineering\n\nContents:\n\n00:00 - Long screwdrivers and old computer problems\n03:18 - Tools of the trade\n05:09 - Cracking open the Mac\n07:41 - Breaking the anode, safely\n09:36 - Logic board removal\n11:06 - Analog board and CRT neck board removal\n12:50 - Recapping the Analog board\n18:08 - Recapping the Logic board\n21:29 - Tantalum caps, MacBatt, and 4 MB RAM upgrade\n23:02 - Re-assembling the Classic\n23:51 - First power\n25:53 - Computing like it's 1991\n28:45 - Revealing the build, reliving the memories\n30:41 - More Macs?", "Try not to kill yourself saving an old Macintosh", "https://www.youtube.com/watch?v=779nru5udpQ", "779nru5udpQ", 1887, false, "/downloads/JeffGeerling/2025-08-22 Try not to kill yourself saving an old Macintosh/Try not to kill yourself saving an old Macintosh [779nru5udpQ].mkv", false, 7, ~U[2025-08-22 14:00:18Z]] 08:53:47.552 [debug] QUERY OK source="sources" db=0.3ms idle=4.4ms UPDATE "sources" SET "last_indexed_at" = ?, "updated_at" = ? WHERE "id" = ? [~U[2025-12-24 08:53:47Z], ~U[2025-12-24 08:53:47Z], 7] 08:53:47.553 [debug] QUERY OK source="media_items" db=0.6ms 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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 08:53:47.554 [debug] QUERY OK source="media_items" db=0.5ms idle=3.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")))) [7] 08:53:47.554 [debug] QUERY OK source="media_items" db=0.1ms idle=3.9ms SELECT count(*) FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [7] 08:53:47.556 [debug] QUERY OK source="tasks" db=0.2ms idle=2.2ms INSERT INTO "tasks" ("job_id","source_id","inserted_at","updated_at") VALUES (?1,?2,?3,?4) RETURNING "id" [7421, 7, ~U[2025-12-24 08:53:47Z], ~U[2025-12-24 08:53:47Z]] 08:53:47.556 [info] {"args":{"id":7},"id":7406,"meta":{},"state":"success","max_attempts":20,"queue":"media_collection_indexing","worker":"Pinchflat.SlowIndexing.MediaCollectionIndexingWorker","source":"oban","duration":63513848,"event":"job:stop","queue_time":24370,"attempt":1,"tags":["media_source","media_collection_indexing","show_in_dashboard"]} 08:53:51.856 [info] {"source":"oban","duration":1381,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:54:00.900 [info] {"source":"oban","duration":314,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:54:21.858 [info] {"source":"oban","duration":1313,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:54:51.860 [info] {"source":"oban","duration":1342,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:55:00.902 [info] {"source":"oban","duration":414,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:55:21.862 [info] {"source":"oban","duration":914,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:55:51.865 [info] {"source":"oban","duration":1830,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:56:00.904 [info] {"source":"oban","duration":481,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:56:21.867 [info] {"source":"oban","duration":1104,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:56:51.869 [info] {"source":"oban","duration":1478,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:57:00.905 [info] {"source":"oban","duration":364,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:57:21.871 [info] {"source":"oban","duration":830,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:57:51.873 [info] {"source":"oban","duration":1272,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:58:00.907 [info] {"source":"oban","duration":643,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:58:21.875 [info] {"source":"oban","duration":1223,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:58:51.877 [info] {"source":"oban","duration":1109,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:59:00.909 [info] {"source":"oban","duration":891,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 08:59:21.879 [info] {"source":"oban","duration":844,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 08:59:51.881 [info] {"source":"oban","duration":1226,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:00:00.910 [info] {"source":"oban","duration":380,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:00:21.883 [info] {"source":"oban","duration":1113,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:00:51.885 [info] {"source":"oban","duration":1047,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:01:00.911 [info] {"source":"oban","duration":488,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:01:21.887 [info] {"source":"oban","duration":1312,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:01:51.890 [info] {"source":"oban","duration":1825,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:02:00.913 [info] {"source":"oban","duration":466,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:02:21.892 [info] {"source":"oban","duration":1346,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:02:51.895 [info] {"source":"oban","duration":1457,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:03:00.915 [info] {"source":"oban","duration":612,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:03:21.898 [info] {"source":"oban","duration":1588,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:03:51.900 [info] {"source":"oban","duration":1363,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:04:00.916 [info] {"source":"oban","duration":557,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:04:21.902 [info] {"source":"oban","duration":1399,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:04:51.904 [info] {"source":"oban","duration":1262,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:05:00.918 [info] {"source":"oban","duration":534,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:05:21.906 [info] {"source":"oban","duration":864,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:05:51.908 [info] {"source":"oban","duration":841,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:06:00.920 [info] {"source":"oban","duration":459,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:06:21.910 [info] {"source":"oban","duration":857,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:06:51.913 [info] {"source":"oban","duration":1188,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:07:00.922 [info] {"source":"oban","duration":458,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:07:21.915 [info] {"source":"oban","duration":933,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:07:51.917 [info] {"source":"oban","duration":929,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:08:00.923 [info] {"source":"oban","duration":197,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:08:21.919 [info] {"source":"oban","duration":878,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:08:51.921 [info] {"source":"oban","duration":1447,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:09:00.925 [info] {"source":"oban","duration":553,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:09:21.923 [info] {"source":"oban","duration":1142,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:09:51.926 [info] {"source":"oban","duration":1649,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:10:00.926 [info] {"source":"oban","duration":325,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:10:21.929 [info] {"source":"oban","duration":1692,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:10:51.931 [info] {"source":"oban","duration":1473,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:11:00.927 [info] {"source":"oban","duration":477,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:11:21.933 [info] {"source":"oban","duration":1215,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:11:51.935 [info] {"source":"oban","duration":950,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:12:00.928 [info] {"source":"oban","duration":588,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:12:21.938 [info] {"source":"oban","duration":1677,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:12:51.940 [info] {"source":"oban","duration":1472,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:13:00.930 [info] {"source":"oban","duration":920,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:13:21.943 [info] {"source":"oban","duration":1670,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:13:51.945 [info] {"source":"oban","duration":1243,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:14:00.932 [info] {"source":"oban","duration":374,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:14:21.947 [info] {"source":"oban","duration":1060,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:14:51.949 [info] {"source":"oban","duration":877,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:15:00.933 [info] {"source":"oban","duration":209,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:15:21.951 [info] {"source":"oban","duration":1239,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:15:51.953 [info] {"source":"oban","duration":929,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:16:00.935 [info] {"source":"oban","duration":530,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:16:21.955 [info] {"source":"oban","duration":1091,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:16:51.957 [info] {"source":"oban","duration":1062,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:17:00.937 [info] {"source":"oban","duration":473,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:17:21.959 [info] {"source":"oban","duration":872,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:17:51.961 [info] {"source":"oban","duration":925,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:18:00.939 [info] {"source":"oban","duration":338,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:18:21.963 [info] {"source":"oban","duration":834,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:18:51.965 [info] {"source":"oban","duration":816,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:19:00.940 [info] {"source":"oban","duration":739,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:19:21.967 [info] {"source":"oban","duration":994,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:19:51.969 [info] {"source":"oban","duration":895,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:20:00.941 [info] {"source":"oban","duration":388,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:20:21.971 [info] {"source":"oban","duration":1155,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:20:51.973 [info] {"source":"oban","duration":913,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:21:00.942 [info] {"source":"oban","duration":268,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:21:21.976 [info] {"source":"oban","duration":1868,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:21:51.978 [info] {"source":"oban","duration":1102,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:22:00.944 [info] {"source":"oban","duration":1358,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:22:21.980 [info] {"source":"oban","duration":1140,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:22:51.982 [info] {"source":"oban","duration":828,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:23:00.946 [info] {"source":"oban","duration":664,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:23:21.984 [info] {"source":"oban","duration":1579,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:23:51.986 [info] {"source":"oban","duration":1088,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:24:00.947 [info] {"source":"oban","duration":551,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:24:21.988 [info] {"source":"oban","duration":1552,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:24:51.990 [info] {"source":"oban","duration":783,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:25:00.949 [info] {"source":"oban","duration":699,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:25:21.993 [info] {"source":"oban","duration":1838,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:25:51.995 [info] {"source":"oban","duration":907,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:26:00.950 [info] {"source":"oban","duration":561,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:26:21.997 [info] {"source":"oban","duration":1552,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:26:33.734 [info] GET / 09:26:33.735 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 09:26:33.735 [debug] QUERY OK source="settings" db=0.3ms idle=442.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:26:33.736 [debug] QUERY OK source="media_profiles" db=0.2ms idle=289.2ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 09:26:33.736 [debug] QUERY OK source="sources" db=0.1ms idle=289.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 09:26:33.744 [debug] QUERY OK source="media_items" db=8.4ms idle=289.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 09:26:33.746 [debug] QUERY OK source="media_items" db=1.5ms idle=298.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 09:26:33.747 [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 [] 09:26:33.747 [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 [] 09:26:33.747 [debug] QUERY OK source="settings" db=0.1ms idle=11.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 09:26:33.748 [debug] QUERY OK source="tasks" db=0.2ms 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"] 09:26:33.749 [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 (NOT (m0."media_filepath" IS NULL)) [] 09:26:33.750 [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] 09:26:33.751 [debug] QUERY OK source="sources" db=0.2ms idle=3.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [3, 2, 7] 09:26:33.756 [debug] QUERY OK source="media_items" db=4.6ms 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:26:33.757 [debug] QUERY OK source="media_items" db=0.4ms 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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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:26:33.757 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 09:26:33.758 [info] Sent 200 in 23ms 09:26:51.999 [info] {"source":"oban","duration":1497,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:27:00.952 [info] {"source":"oban","duration":902,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:27:22.001 [info] {"source":"oban","duration":1102,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:27:52.003 [info] {"source":"oban","duration":877,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:28:00.954 [info] {"source":"oban","duration":937,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:28:22.005 [info] {"source":"oban","duration":1125,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:28:52.007 [info] {"source":"oban","duration":1382,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:29:00.955 [info] {"source":"oban","duration":303,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:29:22.009 [info] {"source":"oban","duration":1395,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:29:52.012 [info] {"source":"oban","duration":1808,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:30:00.957 [info] {"source":"oban","duration":390,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:30:22.014 [info] {"source":"oban","duration":1295,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:30:52.016 [info] {"source":"oban","duration":1498,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:31:00.959 [info] {"source":"oban","duration":985,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:31:22.018 [info] {"source":"oban","duration":720,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:31:52.021 [info] {"source":"oban","duration":1763,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:32:00.960 [info] {"source":"oban","duration":486,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:32:22.023 [info] {"source":"oban","duration":796,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:32:52.026 [info] {"source":"oban","duration":1625,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:33:00.962 [info] {"source":"oban","duration":510,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:33:22.028 [info] {"source":"oban","duration":848,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:33:52.030 [info] {"source":"oban","duration":1149,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:34:00.963 [info] {"source":"oban","duration":295,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:34:22.032 [info] {"source":"oban","duration":881,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:34:52.034 [info] {"source":"oban","duration":1410,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:35:00.964 [info] {"source":"oban","duration":396,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:35:22.037 [info] {"source":"oban","duration":2558,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:35:52.039 [info] {"source":"oban","duration":1504,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:36:00.966 [info] {"source":"oban","duration":627,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:36:22.041 [info] {"source":"oban","duration":916,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:36:52.043 [info] {"source":"oban","duration":1358,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:37:00.967 [info] {"source":"oban","duration":317,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:37:22.046 [info] {"source":"oban","duration":1577,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:37:52.048 [info] {"source":"oban","duration":1293,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:38:00.968 [info] {"source":"oban","duration":325,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:38:22.050 [info] {"source":"oban","duration":1211,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:38:52.052 [info] {"source":"oban","duration":1342,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:39:00.969 [info] {"source":"oban","duration":381,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:39:22.054 [info] {"source":"oban","duration":1479,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:39:52.056 [info] {"source":"oban","duration":892,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:40:00.971 [info] {"source":"oban","duration":682,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:40:22.058 [info] {"source":"oban","duration":787,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:40:52.060 [info] {"source":"oban","duration":952,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:41:00.973 [info] {"source":"oban","duration":1301,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:41:22.062 [info] {"source":"oban","duration":937,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:41:52.064 [info] {"source":"oban","duration":1179,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:42:00.975 [info] {"source":"oban","duration":885,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:42:22.066 [info] {"source":"oban","duration":1289,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:42:52.068 [info] {"source":"oban","duration":911,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:43:00.977 [info] {"source":"oban","duration":421,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:43:22.070 [info] {"source":"oban","duration":1445,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:43:52.072 [info] {"source":"oban","duration":1215,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:44:00.978 [info] {"source":"oban","duration":438,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:44:22.074 [info] {"source":"oban","duration":837,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:44:52.077 [info] {"source":"oban","duration":1744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:45:00.980 [info] {"source":"oban","duration":298,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:45:22.079 [info] {"source":"oban","duration":908,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:45:52.081 [info] {"source":"oban","duration":1618,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:46:00.981 [info] {"source":"oban","duration":487,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:46:22.083 [info] {"source":"oban","duration":1570,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:46:52.085 [info] {"source":"oban","duration":1234,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:47:00.982 [info] {"source":"oban","duration":398,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:47:22.087 [info] {"source":"oban","duration":1397,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:47:52.089 [info] {"source":"oban","duration":1108,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:48:00.983 [info] {"source":"oban","duration":427,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:48:22.091 [info] {"source":"oban","duration":1083,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:48:52.093 [info] {"source":"oban","duration":1060,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:49:00.984 [info] {"source":"oban","duration":276,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:49:22.096 [info] {"source":"oban","duration":2219,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:49:52.099 [info] {"source":"oban","duration":1673,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:50:00.986 [info] {"source":"oban","duration":423,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:50:22.101 [info] {"source":"oban","duration":1155,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:50:52.103 [info] {"source":"oban","duration":1447,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:51:00.988 [info] {"source":"oban","duration":734,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:51:22.105 [info] {"source":"oban","duration":879,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:51:52.107 [info] {"source":"oban","duration":1021,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:52:00.989 [info] {"source":"oban","duration":383,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:52:22.109 [info] {"source":"oban","duration":1460,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:52:52.111 [info] {"source":"oban","duration":921,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:53:00.991 [info] {"source":"oban","duration":682,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:53:22.113 [info] {"source":"oban","duration":1504,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:53:52.115 [info] {"source":"oban","duration":1086,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:54:00.993 [info] {"source":"oban","duration":453,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:54:22.117 [info] {"source":"oban","duration":1347,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:54:52.119 [info] {"source":"oban","duration":1387,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:55:00.995 [info] {"source":"oban","duration":810,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:55:22.121 [info] {"source":"oban","duration":983,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:55:52.123 [info] {"source":"oban","duration":1642,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:56:00.996 [info] {"source":"oban","duration":241,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:56:22.125 [info] {"source":"oban","duration":1041,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:56:52.127 [info] {"source":"oban","duration":1373,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:57:00.998 [info] {"source":"oban","duration":705,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:57:22.129 [info] {"source":"oban","duration":1007,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:57:52.131 [info] {"source":"oban","duration":932,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:58:01.000 [info] {"source":"oban","duration":629,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:58:22.133 [info] {"source":"oban","duration":807,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:58:48.278 [info] {"args":{"id":23890},"id":7357,"meta":{},"system_time":1766570328278672536,"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"]} 09:58:48.281 [debug] QUERY OK source="media_items" db=2.4ms idle=828.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" = ?) [23890] 09:58:48.281 [info] User scripts lifecyle file either not present or is empty. Skipping. 09:58:48.283 [debug] QUERY OK source="sources" db=1.6ms idle=831.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 09:58:48.283 [debug] QUERY OK source="media_profiles" db=0.2ms idle=832.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:58:48.284 [debug] QUERY OK source="media_items" db=0.2ms idle=12.4ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [23890] 09:58:48.301 [debug] QUERY OK source="media_metadata" db=0.1ms idle=22.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" = ?) [23890] 09:58:48.301 [debug] QUERY OK source="media_profiles" db=0.1ms idle=20.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] 09:58:48.302 [debug] QUERY OK source="settings" db=0.2ms idle=18.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 09:58:48.302 [debug] QUERY OK source="settings" db=0.1ms idle=18.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 09:58:48.303 [debug] Running yt-dlp command for action: get_downloadable_status 09:58:48.303 [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 [] 09:58:48.303 [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 [] 09:58:48.303 [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:58:48.304 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=0DZTq6PaZAY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b6/8e/b68e13d04e4cdec469c5f93cc68fe6d7e1c548df2422003f4fff629fd1a81a69.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 09:58:51.451 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=0DZTq6PaZAY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b6/8e/b68e13d04e4cdec469c5f93cc68fe6d7e1c548df2422003f4fff629fd1a81a69.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: [youtube] 0DZTq6PaZAY: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 0DZTq6PaZAY: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 09:58:51.451 [debug] Running yt-dlp command for action: download 09:58:51.452 [debug] QUERY OK source="settings" db=0.3ms idle=174.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 09:58:51.452 [debug] QUERY OK source="settings" db=0.2ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 09:58:51.452 [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 [] 09:58:51.453 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=0DZTq6PaZAY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/ef/e3/efe3ff0dafa0744447248e4e81e8118fa21496f80ebdb41b629787a696dc27c9.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 09:58:52.135 [info] {"source":"oban","duration":1457,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:58:55.035 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=0DZTq6PaZAY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/ef/e3/efe3ff0dafa0744447248e4e81e8118fa21496f80ebdb41b629787a696dc27c9.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 WARNING: [youtube] 0DZTq6PaZAY: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 0DZTq6PaZAY: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 09:58:55.035 [error] yt-dlp download error for media item #23890: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] 0DZTq6PaZAY: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] 0DZTq6PaZAY: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 09:58:55.036 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23890},"id":7357,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6757202,"event":"job:exception","queue_time":509540,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 09:59:00.001 [info] {"source":"oban","duration":350,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 09:59:22.137 [info] {"source":"oban","duration":1089,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 09:59:52.139 [info] {"source":"oban","duration":1010,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:00:00.003 [info] {"source":"oban","duration":529,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:00:22.141 [info] {"source":"oban","duration":1454,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:00:52.144 [info] {"source":"oban","duration":1731,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:01:00.004 [info] {"source":"oban","duration":507,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:01:22.146 [info] {"source":"oban","duration":901,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:01:52.148 [info] {"source":"oban","duration":1047,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:02:00.005 [info] {"source":"oban","duration":328,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:02:22.150 [info] {"source":"oban","duration":972,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:02:52.152 [info] {"source":"oban","duration":947,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:03:00.006 [info] {"source":"oban","duration":533,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:03:22.154 [info] {"source":"oban","duration":949,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:03:52.156 [info] {"source":"oban","duration":819,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:04:00.008 [info] {"source":"oban","duration":440,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:04:22.158 [info] {"source":"oban","duration":1557,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:04:52.160 [info] {"source":"oban","duration":786,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:05:00.010 [info] {"source":"oban","duration":505,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:05:22.163 [info] {"source":"oban","duration":1743,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:05:52.164 [info] {"source":"oban","duration":747,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:06:00.011 [info] {"source":"oban","duration":426,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:06:22.166 [info] {"source":"oban","duration":1520,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:06:52.168 [info] {"source":"oban","duration":1572,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:07:00.013 [info] {"source":"oban","duration":473,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:07:22.170 [info] {"source":"oban","duration":1357,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:07:52.172 [info] {"source":"oban","duration":1426,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:08:00.015 [info] {"source":"oban","duration":854,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:08:22.175 [info] {"source":"oban","duration":1827,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:08:52.177 [info] {"source":"oban","duration":1637,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:09:00.016 [info] {"source":"oban","duration":274,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:09:22.179 [info] {"source":"oban","duration":1068,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:09:52.181 [info] {"source":"oban","duration":950,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:10:00.017 [info] {"source":"oban","duration":576,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:10:22.182 [info] {"source":"oban","duration":689,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:10:52.184 [info] {"source":"oban","duration":881,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:11:00.018 [info] {"source":"oban","duration":207,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:11:22.187 [info] {"source":"oban","duration":1623,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:11:52.189 [info] {"source":"oban","duration":1500,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:12:00.019 [info] {"source":"oban","duration":326,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:12:22.191 [info] {"source":"oban","duration":1538,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:12:52.193 [info] {"source":"oban","duration":1639,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:13:00.021 [info] {"source":"oban","duration":486,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:13:22.195 [info] {"source":"oban","duration":692,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:13:52.197 [info] {"source":"oban","duration":1559,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:14:00.022 [info] {"source":"oban","duration":439,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:14:22.199 [info] {"source":"oban","duration":733,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:14:52.201 [info] {"source":"oban","duration":1529,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:15:00.024 [info] {"source":"oban","duration":656,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:15:22.203 [info] {"source":"oban","duration":1505,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:15:52.205 [info] {"source":"oban","duration":1056,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:16:00.025 [info] {"source":"oban","duration":298,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:16:22.207 [info] {"source":"oban","duration":990,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:16:52.209 [info] {"source":"oban","duration":875,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:17:00.027 [info] {"source":"oban","duration":506,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:17:22.211 [info] {"source":"oban","duration":921,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:17:52.213 [info] {"source":"oban","duration":810,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:18:00.028 [info] {"source":"oban","duration":257,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:18:22.215 [info] {"source":"oban","duration":1419,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:18:52.217 [info] {"source":"oban","duration":1233,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:19:00.030 [info] {"source":"oban","duration":429,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:19:22.220 [info] {"source":"oban","duration":1127,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:19:52.222 [info] {"source":"oban","duration":767,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:20:00.032 [info] {"source":"oban","duration":1096,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:20:22.224 [info] {"source":"oban","duration":1878,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:20:52.226 [info] {"source":"oban","duration":1063,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:21:00.034 [info] {"source":"oban","duration":926,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:21:22.228 [info] {"source":"oban","duration":1017,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:21:52.230 [info] {"source":"oban","duration":1053,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:22:00.036 [info] {"source":"oban","duration":628,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:22:22.232 [info] {"source":"oban","duration":866,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:22:52.234 [info] {"source":"oban","duration":1445,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:23:00.037 [info] {"source":"oban","duration":379,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:23:22.237 [info] {"source":"oban","duration":1377,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:23:52.240 [info] {"source":"oban","duration":1805,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:24:00.039 [info] {"source":"oban","duration":745,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:24:22.242 [info] {"source":"oban","duration":929,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:24:52.244 [info] {"source":"oban","duration":1439,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:25:00.040 [info] {"source":"oban","duration":369,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:25:22.246 [info] {"source":"oban","duration":1061,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:25:52.248 [info] {"source":"oban","duration":1047,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:26:00.041 [info] {"source":"oban","duration":306,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:26:22.251 [info] {"source":"oban","duration":1706,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:26:52.253 [info] {"source":"oban","duration":1256,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:27:00.043 [info] {"source":"oban","duration":1022,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:27:22.255 [info] {"source":"oban","duration":1093,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:27:52.257 [info] {"source":"oban","duration":1012,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:28:00.045 [info] {"source":"oban","duration":618,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:28:22.259 [info] {"source":"oban","duration":1006,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:28:52.261 [info] {"source":"oban","duration":956,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:29:00.047 [info] {"source":"oban","duration":802,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:29:22.263 [info] {"source":"oban","duration":753,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:29:52.265 [info] {"source":"oban","duration":1315,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:30:00.049 [info] {"source":"oban","duration":897,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:30:22.266 [info] {"source":"oban","duration":734,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:30:42.207 [info] {"args":{"id":23906},"id":7361,"meta":{},"system_time":1766572242207058749,"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"]} 10:30:42.207 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=752.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" = ?) [23906] 10:30:42.208 [info] User scripts lifecyle file either not present or is empty. Skipping. 10:30:42.208 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=753.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" = ?) [8] 10:30:42.208 [debug] QUERY OK source="media_profiles" db=0.2ms idle=754.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] 10:30:42.209 [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 [23906] 10:30:42.210 [debug] QUERY OK source="media_metadata" db=0.1ms 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" = ?) [23906] 10:30:42.210 [debug] QUERY OK source="media_profiles" db=0.2ms 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] 10:30:42.211 [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 [] 10:30:42.211 [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 [] 10:30:42.211 [debug] Running yt-dlp command for action: get_downloadable_status 10:30:42.224 [debug] QUERY OK source="settings" db=0.2ms idle=14.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 10:30:42.225 [debug] QUERY OK source="settings" db=0.1ms idle=14.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 10:30:42.225 [debug] QUERY OK source="settings" db=0.1ms idle=14.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 10:30:42.225 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=t8SoogI319k --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/64/9b/649be10a5178a38f0cdf66139d9eb57f4e93549a0adee9676000ccfbf3b351a8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 10:30:45.391 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=t8SoogI319k --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/64/9b/649be10a5178a38f0cdf66139d9eb57f4e93549a0adee9676000ccfbf3b351a8.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: [youtube] t8SoogI319k: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] t8SoogI319k: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 10:30:45.391 [debug] Running yt-dlp command for action: download 10:30:45.392 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1937.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:30:45.392 [debug] QUERY OK source="settings" db=0.4ms idle=1937.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 10:30:45.393 [debug] QUERY OK source="settings" db=0.2ms idle=1938.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:30:45.393 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=t8SoogI319k --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/c1/e4/c1e46871ef77a3f6182f117876f12ca85dccf8a8f9c7d85cd231117e1d47fcb2.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 10:30:49.069 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=t8SoogI319k --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/c1/e4/c1e46871ef77a3f6182f117876f12ca85dccf8a8f9c7d85cd231117e1d47fcb2.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 WARNING: [youtube] t8SoogI319k: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] t8SoogI319k: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 10:30:49.069 [error] yt-dlp download error for media item #23906: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] t8SoogI319k: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] t8SoogI319k: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 10:30:49.070 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23906},"id":7361,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6862910,"event":"job:exception","queue_time":434694,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 10:30:52.268 [info] {"source":"oban","duration":1472,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:31:00.050 [info] {"source":"oban","duration":429,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:31:22.270 [info] {"source":"oban","duration":1669,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:31:52.273 [info] {"source":"oban","duration":1672,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:32:00.051 [info] {"source":"oban","duration":474,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:32:22.275 [info] {"source":"oban","duration":1056,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:32:52.278 [info] {"source":"oban","duration":1621,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:33:00.053 [info] {"source":"oban","duration":793,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:33:22.280 [info] {"source":"oban","duration":1442,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:33:52.282 [info] {"source":"oban","duration":1264,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:34:00.054 [info] {"source":"oban","duration":296,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:34:22.284 [info] {"source":"oban","duration":849,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:34:52.286 [info] {"source":"oban","duration":1196,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:35:00.055 [info] {"source":"oban","duration":284,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:35:16.775 [info] {"args":{"id":23993},"id":7378,"meta":{},"system_time":1766572516775502886,"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"]} 10:35:16.776 [debug] QUERY OK source="media_items" db=0.3ms idle=1320.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" = ?) [23993] 10:35:16.776 [info] User scripts lifecyle file either not present or is empty. Skipping. 10:35:16.776 [debug] QUERY OK source="sources" db=0.2ms idle=1321.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" = ?) [8] 10:35:16.777 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1011.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] 10:35:16.777 [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 [23993] 10:35:16.778 [debug] QUERY OK source="media_metadata" db=0.1ms idle=2.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" = ?) [23993] 10:35:16.778 [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] 10:35:16.779 [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 [] 10:35:16.779 [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 [] 10:35:16.780 [debug] Running yt-dlp command for action: get_downloadable_status 10:35:16.780 [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 [] 10:35:16.781 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 10:35:16.781 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 10:35:16.781 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/wh_tRKtW76Y --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/99/1e/991ec7fc73d2123008498b2be660730f20e1163accd5706e518b177b67b2ec55.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 10:35:19.901 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/wh_tRKtW76Y --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/99/1e/991ec7fc73d2123008498b2be660730f20e1163accd5706e518b177b67b2ec55.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: [youtube] wh_tRKtW76Y: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] wh_tRKtW76Y: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 10:35:19.901 [debug] Running yt-dlp command for action: download 10:35:19.902 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1447.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:35:19.902 [debug] QUERY OK source="settings" db=0.2ms idle=1447.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:35:19.902 [debug] QUERY OK source="settings" db=0.1ms idle=1448.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:35:19.903 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/wh_tRKtW76Y --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/f6/b3/f6b3ebdfc456312564e0b89523d824ce8cc35a32c068c54dcf3b0febe1948f30.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 10:35:22.289 [info] {"source":"oban","duration":1981,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:35:23.129 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/wh_tRKtW76Y --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/f6/b3/f6b3ebdfc456312564e0b89523d824ce8cc35a32c068c54dcf3b0febe1948f30.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 WARNING: [youtube] wh_tRKtW76Y: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] wh_tRKtW76Y: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 10:35:23.129 [error] yt-dlp download error for media item #23993: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] wh_tRKtW76Y: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] wh_tRKtW76Y: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 10:35:23.130 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23993},"id":7378,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6354611,"event":"job:exception","queue_time":655922,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 10:35:52.291 [info] {"source":"oban","duration":1518,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:36:00.057 [info] {"source":"oban","duration":679,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:36:22.293 [info] {"source":"oban","duration":1263,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:36:52.295 [info] {"source":"oban","duration":761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:37:00.058 [info] {"source":"oban","duration":305,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:37:22.297 [info] {"source":"oban","duration":1438,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:37:52.299 [info] {"source":"oban","duration":1402,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:38:00.060 [info] {"source":"oban","duration":661,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:38:22.301 [info] {"source":"oban","duration":1378,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:38:52.303 [info] {"source":"oban","duration":1229,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:39:00.062 [info] {"source":"oban","duration":1391,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:39:22.305 [info] {"source":"oban","duration":1602,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:39:52.307 [info] {"source":"oban","duration":1591,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:40:00.064 [info] {"source":"oban","duration":785,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:40:22.309 [info] {"source":"oban","duration":812,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:40:52.311 [info] {"source":"oban","duration":910,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:41:00.066 [info] {"source":"oban","duration":457,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:41:22.314 [info] {"source":"oban","duration":1450,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:41:52.316 [info] {"source":"oban","duration":984,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:42:00.068 [info] {"source":"oban","duration":858,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:42:22.318 [info] {"source":"oban","duration":1353,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:42:52.320 [info] {"source":"oban","duration":861,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:43:00.070 [info] {"source":"oban","duration":514,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:43:22.322 [info] {"source":"oban","duration":804,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:43:52.324 [info] {"source":"oban","duration":1022,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:44:00.072 [info] {"source":"oban","duration":385,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:44:22.326 [info] {"source":"oban","duration":748,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:44:52.328 [info] {"source":"oban","duration":855,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:45:00.074 [info] {"source":"oban","duration":506,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:45:22.330 [info] {"source":"oban","duration":1282,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:45:52.332 [info] {"source":"oban","duration":1496,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:46:00.076 [info] {"source":"oban","duration":507,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:46:22.334 [info] {"source":"oban","duration":814,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:46:52.337 [info] {"source":"oban","duration":1488,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:47:00.078 [info] {"source":"oban","duration":650,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:47:22.339 [info] {"source":"oban","duration":1156,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:47:52.341 [info] {"source":"oban","duration":1195,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:48:00.079 [info] {"source":"oban","duration":516,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:48:22.344 [info] {"source":"oban","duration":1109,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:48:52.346 [info] {"source":"oban","duration":1535,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:49:00.081 [info] {"source":"oban","duration":538,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:49:22.348 [info] {"source":"oban","duration":1512,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:49:52.350 [info] {"source":"oban","duration":1649,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:50:00.083 [info] {"source":"oban","duration":861,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:50:22.353 [info] {"source":"oban","duration":1387,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:50:45.686 [info] {"args":{"id":23983},"id":7373,"meta":{},"system_time":1766573445686593881,"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"]} 10:50:45.687 [debug] QUERY OK source="media_items" db=0.2ms idle=230.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" = ?) [23983] 10:50:45.687 [info] User scripts lifecyle file either not present or is empty. Skipping. 10:50:45.688 [debug] QUERY OK source="sources" db=0.2ms idle=231.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" = ?) [8] 10:50:45.688 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=231.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] 10:50:45.689 [debug] QUERY OK source="media_items" db=0.2ms 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 [23983] 10:50:45.690 [debug] QUERY OK source="media_metadata" db=0.1ms idle=3.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" = ?) [23983] 10:50:45.690 [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] 10:50:45.691 [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 [] 10:50:45.691 [debug] QUERY OK source="settings" db=0.1ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 10:50:45.691 [debug] Running yt-dlp command for action: get_downloadable_status 10:50:45.721 [debug] QUERY OK source="settings" db=0.1ms 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 [] 10:50:45.721 [debug] QUERY OK source="settings" db=0.2ms 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 [] 10:50:45.722 [debug] QUERY OK source="settings" db=0.2ms idle=31.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 10:50:45.722 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/VtL0m15EgLU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a3/8b/a38b14681f2d34130834ed03266c97ed9725c210939a6ce352c201a73cfe2bf3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 10:50:48.606 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/VtL0m15EgLU --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a3/8b/a38b14681f2d34130834ed03266c97ed9725c210939a6ce352c201a73cfe2bf3.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: [youtube] VtL0m15EgLU: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] VtL0m15EgLU: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 10:50:48.606 [debug] Running yt-dlp command for action: download 10:50:48.607 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1150.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:50:48.607 [debug] QUERY OK source="settings" db=0.1ms idle=1150.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:50:48.608 [debug] QUERY OK source="settings" db=0.1ms idle=1151.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:50:48.608 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/VtL0m15EgLU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/6d/cf/6dcffb2886bb617964593622f1c128b177bb5ce09e178695e89dd479fd16e992.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 10:50:52.179 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/VtL0m15EgLU --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/6d/cf/6dcffb2886bb617964593622f1c128b177bb5ce09e178695e89dd479fd16e992.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 WARNING: [youtube] VtL0m15EgLU: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] VtL0m15EgLU: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 10:50:52.180 [error] yt-dlp download error for media item #23983: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] VtL0m15EgLU: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] VtL0m15EgLU: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 10:50:52.181 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23983},"id":7373,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6493829,"event":"job:exception","queue_time":244566,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 10:50:52.355 [info] {"source":"oban","duration":842,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:51:00.085 [info] {"source":"oban","duration":520,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:51:22.358 [info] {"source":"oban","duration":1742,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:51:52.361 [info] {"source":"oban","duration":1825,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:52:00.087 [info] {"source":"oban","duration":599,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:52:22.363 [info] {"source":"oban","duration":927,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:52:52.365 [info] {"source":"oban","duration":1559,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:52:53.956 [info] {"args":{"id":23995},"id":7379,"meta":{},"system_time":1766573573956330683,"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"]} 10:52:53.957 [debug] QUERY OK source="media_items" db=0.1ms idle=500.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" = ?) [23995] 10:52:53.957 [info] User scripts lifecyle file either not present or is empty. Skipping. 10:52:53.957 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=501.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 10:52:53.958 [debug] QUERY OK source="media_profiles" db=0.1ms idle=501.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:52:53.958 [debug] QUERY OK source="media_items" db=0.2ms 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 [23995] 10:52:53.959 [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" = ?) [23995] 10:52:53.959 [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] 10:52:53.960 [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 [] 10:52:53.960 [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 [] 10:52:53.960 [debug] Running yt-dlp command for action: get_downloadable_status 10:52:53.961 [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 [] 10:52:53.961 [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 [] 10:52:53.961 [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:52:53.961 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/pERSp3mAH0M --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/eb/af/ebaf3d87a14b2db9745bc0fc09d0131a6af7581e46048200383844e08beaec8e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 10:52:56.964 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/pERSp3mAH0M --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/eb/af/ebaf3d87a14b2db9745bc0fc09d0131a6af7581e46048200383844e08beaec8e.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: [youtube] pERSp3mAH0M: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] pERSp3mAH0M: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 10:52:56.964 [debug] Running yt-dlp command for action: download 10:52:56.965 [debug] QUERY OK source="settings" db=0.1ms idle=1508.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:52:56.965 [debug] QUERY OK source="settings" db=0.1ms idle=1508.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:52:56.965 [debug] QUERY OK source="settings" db=0.1ms idle=1509.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:52:56.966 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/pERSp3mAH0M --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/ca/c0/cac0936354034e0054a6575d68d1c2bb1d2192edd6051daa042b8821b8382060.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 10:53:00.089 [info] {"source":"oban","duration":768,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:53:00.449 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/pERSp3mAH0M --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/ca/c0/cac0936354034e0054a6575d68d1c2bb1d2192edd6051daa042b8821b8382060.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 WARNING: [youtube] pERSp3mAH0M: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] pERSp3mAH0M: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 10:53:00.449 [error] yt-dlp download error for media item #23995: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] pERSp3mAH0M: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] pERSp3mAH0M: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 10:53:00.450 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23995},"id":7379,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6493782,"event":"job:exception","queue_time":602030,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 10:53:22.368 [info] {"source":"oban","duration":1631,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:53:52.370 [info] {"source":"oban","duration":1514,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:54:00.090 [info] {"source":"oban","duration":386,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:54:22.372 [info] {"source":"oban","duration":1336,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:54:52.374 [info] {"source":"oban","duration":867,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:55:00.091 [info] {"source":"oban","duration":381,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:55:22.376 [info] {"source":"oban","duration":881,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:55:52.378 [info] {"source":"oban","duration":1315,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:56:00.093 [info] {"source":"oban","duration":464,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:56:22.380 [info] {"source":"oban","duration":1527,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:56:52.383 [info] {"source":"oban","duration":2033,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:57:00.095 [info] {"source":"oban","duration":985,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:57:22.385 [info] {"source":"oban","duration":1407,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:57:52.387 [info] {"source":"oban","duration":1450,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:58:00.096 [info] {"source":"oban","duration":293,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:58:22.389 [info] {"source":"oban","duration":1309,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:58:52.392 [info] {"source":"oban","duration":1756,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:59:00.098 [info] {"source":"oban","duration":1036,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 10:59:22.395 [info] {"source":"oban","duration":1707,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 10:59:52.398 [info] {"source":"oban","duration":1620,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:00:00.099 [info] {"source":"oban","duration":651,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:00:22.400 [info] {"source":"oban","duration":1313,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:00:52.402 [info] {"source":"oban","duration":1089,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:01:00.101 [info] {"source":"oban","duration":594,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:01:22.404 [info] {"source":"oban","duration":988,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:01:52.406 [info] {"source":"oban","duration":1334,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:02:00.103 [info] {"source":"oban","duration":415,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:02:22.408 [info] {"source":"oban","duration":1295,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:02:52.410 [info] {"source":"oban","duration":791,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:03:00.104 [info] {"source":"oban","duration":344,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:03:22.413 [info] {"source":"oban","duration":1627,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:03:52.416 [info] {"source":"oban","duration":1669,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:04:00.105 [info] {"source":"oban","duration":588,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:04:22.418 [info] {"source":"oban","duration":1200,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:04:52.420 [info] {"source":"oban","duration":1565,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:05:00.107 [info] {"source":"oban","duration":374,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:05:22.422 [info] {"source":"oban","duration":934,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:05:52.424 [info] {"source":"oban","duration":1310,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:06:00.109 [info] {"source":"oban","duration":618,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:06:22.426 [info] {"source":"oban","duration":1175,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:06:34.857 [info] {"args":{"id":23985},"id":7374,"meta":{},"system_time":1766574394857369006,"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"]} 11:06:34.857 [debug] QUERY OK source="media_items" db=0.2ms idle=1399.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" = ?) [23985] 11:06:34.858 [info] User scripts lifecyle file either not present or is empty. Skipping. 11:06:34.858 [debug] QUERY OK source="sources" db=0.2ms idle=1399.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" = ?) [8] 11:06:34.859 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1009.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] 11:06:34.859 [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 [23985] 11:06:34.876 [debug] QUERY OK source="media_metadata" db=0.2ms queue=0.1ms idle=18.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" = ?) [23985] 11:06:34.876 [debug] QUERY OK source="media_profiles" db=0.1ms idle=18.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] 11:06:34.877 [debug] QUERY OK source="settings" db=0.1ms idle=18.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:06:34.877 [debug] QUERY OK source="settings" db=0.1ms 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 [] 11:06:34.877 [debug] Running yt-dlp command for action: get_downloadable_status 11:06:34.878 [debug] QUERY OK source="settings" db=0.1ms idle=18.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:06:34.878 [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 [] 11:06:34.878 [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 [] 11:06:34.878 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/v6QiqXig8p8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/bf/b2/bfb2136d146c9a15a63453a27bcd52b143021080dd9c0caae46581487bbec1a5.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:06:37.891 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/v6QiqXig8p8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/bf/b2/bfb2136d146c9a15a63453a27bcd52b143021080dd9c0caae46581487bbec1a5.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: [youtube] v6QiqXig8p8: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] v6QiqXig8p8: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 11:06:37.891 [debug] Running yt-dlp command for action: download 11:06:37.892 [debug] QUERY OK source="settings" db=0.4ms queue=0.1ms idle=1433.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:06:37.893 [debug] QUERY OK source="settings" db=0.2ms idle=1434.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:06:37.893 [debug] QUERY OK source="settings" db=0.2ms idle=1434.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:06:37.893 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/v6QiqXig8p8 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/f1/51/f1513af75ca975336244d398ef2cf1dae1dd6ca94ccc27edaead28d8db096290.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:06:41.274 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/v6QiqXig8p8 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/f1/51/f1513af75ca975336244d398ef2cf1dae1dd6ca94ccc27edaead28d8db096290.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 WARNING: [youtube] v6QiqXig8p8: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] v6QiqXig8p8: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 11:06:41.274 [error] yt-dlp download error for media item #23985: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] v6QiqXig8p8: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] v6QiqXig8p8: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 11:06:41.275 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23985},"id":7374,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6417284,"event":"job:exception","queue_time":185303,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 11:06:52.428 [info] {"source":"oban","duration":1407,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:07:00.110 [info] {"source":"oban","duration":250,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:07:22.431 [info] {"source":"oban","duration":1864,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:07:52.433 [info] {"source":"oban","duration":1420,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:08:00.112 [info] {"source":"oban","duration":336,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:08:22.435 [info] {"source":"oban","duration":1239,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:08:36.116 [info] {"args":{"id":23989},"id":7376,"meta":{},"system_time":1766574516116630965,"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"]} 11:08:36.117 [debug] QUERY OK source="media_items" db=0.2ms idle=658.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" = ?) [23989] 11:08:36.117 [info] User scripts lifecyle file either not present or is empty. Skipping. 11:08:36.117 [debug] QUERY OK source="sources" db=0.2ms idle=659.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 11:08:36.118 [debug] QUERY OK source="media_profiles" db=0.1ms idle=659.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] 11:08:36.118 [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 [23989] 11:08:36.129 [debug] QUERY OK source="media_metadata" db=0.1ms idle=12.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" = ?) [23989] 11:08:36.129 [debug] QUERY OK source="media_profiles" db=0.1ms 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", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 11:08:36.129 [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 [] 11:08:36.130 [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 [] 11:08:36.130 [debug] Running yt-dlp command for action: get_downloadable_status 11:08:36.141 [debug] QUERY OK source="settings" db=0.1ms idle=22.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:08:36.142 [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 [] 11:08:36.142 [debug] QUERY OK source="settings" db=0.1ms idle=12.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:08:36.142 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/cut3p_-Y7ik --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a4/f6/a4f6cef7bdf5273fd32ba737cb589625b829dda8594027a0626514506a54cbe4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:08:39.394 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/cut3p_-Y7ik --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/a4/f6/a4f6cef7bdf5273fd32ba737cb589625b829dda8594027a0626514506a54cbe4.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: [youtube] cut3p_-Y7ik: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] cut3p_-Y7ik: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 11:08:39.395 [debug] Running yt-dlp command for action: download 11:08:39.395 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1936.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:08:39.396 [debug] QUERY OK source="settings" db=0.2ms idle=1937.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:08:39.396 [debug] QUERY OK source="settings" db=0.2ms idle=1937.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:08:39.396 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/cut3p_-Y7ik --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/2c/3c/2c3c8124fd0e346eff7e5a9935078ee4c99ab3a58507afb16de3b1723b609f96.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:08:43.120 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/cut3p_-Y7ik --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/2c/3c/2c3c8124fd0e346eff7e5a9935078ee4c99ab3a58507afb16de3b1723b609f96.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 WARNING: [youtube] cut3p_-Y7ik: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] cut3p_-Y7ik: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 11:08:43.120 [error] yt-dlp download error for media item #23989: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] cut3p_-Y7ik: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] cut3p_-Y7ik: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 11:08:43.121 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23989},"id":7376,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":7004590,"event":"job:exception","queue_time":54136,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 11:08:52.438 [info] {"source":"oban","duration":1698,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:09:00.114 [info] {"source":"oban","duration":983,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:09:22.440 [info] {"source":"oban","duration":1061,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:09:52.442 [info] {"source":"oban","duration":1063,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:10:00.115 [info] {"source":"oban","duration":362,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:10:13.308 [info] {"args":{"id":23953},"id":7367,"meta":{},"system_time":1766574613308080276,"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"]} 11:10:13.308 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=1849.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" = ?) [23953] 11:10:13.308 [info] User scripts lifecyle file either not present or is empty. Skipping. 11:10:13.309 [debug] QUERY OK source="sources" db=0.1ms idle=1850.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 11:10:13.309 [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] 11:10:13.310 [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 [23953] 11:10:13.310 [debug] QUERY OK source="media_metadata" db=0.0ms idle=2.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" = ?) [23953] 11:10:13.311 [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] 11:10:13.311 [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 [] 11:10:13.312 [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 [] 11:10:13.312 [debug] Running yt-dlp command for action: get_downloadable_status 11:10:13.312 [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 [] 11:10:13.313 [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 [] 11:10:13.313 [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:10:13.313 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/4qTZ8p4o_fY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/96/2b/962b19785e12816410de2fdc381e4c8406150f3cf1ff1b185b9b1e89e1eca37b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:10:16.171 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/4qTZ8p4o_fY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/96/2b/962b19785e12816410de2fdc381e4c8406150f3cf1ff1b185b9b1e89e1eca37b.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: [youtube] 4qTZ8p4o_fY: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 4qTZ8p4o_fY: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 11:10:16.171 [debug] Running yt-dlp command for action: download 11:10:16.172 [debug] QUERY OK source="settings" db=0.2ms idle=1713.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:10:16.172 [debug] QUERY OK source="settings" db=0.2ms 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 [] 11:10:16.173 [debug] QUERY OK source="settings" db=0.2ms idle=1714.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:10:16.173 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/4qTZ8p4o_fY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/54/ed/54edd013edba3b1f9e72069c41824759620b03f9aa822824c88d2aec568e2d6d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:10:19.521 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/4qTZ8p4o_fY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/54/ed/54edd013edba3b1f9e72069c41824759620b03f9aa822824c88d2aec568e2d6d.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 WARNING: [youtube] 4qTZ8p4o_fY: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 4qTZ8p4o_fY: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 11:10:19.521 [error] yt-dlp download error for media item #23953: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] 4qTZ8p4o_fY: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] 4qTZ8p4o_fY: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 11:10:19.522 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23953},"id":7367,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6213532,"event":"job:exception","queue_time":912595,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 11:10:22.444 [info] {"source":"oban","duration":1322,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:10:52.446 [info] {"source":"oban","duration":1045,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:11:00.117 [info] {"source":"oban","duration":893,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:11:22.448 [info] {"source":"oban","duration":839,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:11:52.450 [info] {"source":"oban","duration":1363,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:12:00.119 [info] {"source":"oban","duration":987,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:12:22.452 [info] {"source":"oban","duration":1622,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:12:52.454 [info] {"source":"oban","duration":1416,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:13:00.121 [info] {"source":"oban","duration":551,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:13:22.456 [info] {"source":"oban","duration":1503,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:13:52.458 [info] {"source":"oban","duration":1297,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:14:00.122 [info] {"source":"oban","duration":317,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:14:11.797 [info] {"args":{"id":24448},"id":7391,"meta":{},"system_time":1766574851797857408,"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"]} 11:14:11.798 [debug] QUERY OK source="media_items" db=0.2ms idle=339.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" = ?) [24448] 11:14:11.798 [info] User scripts lifecyle file either not present or is empty. Skipping. 11:14:11.799 [debug] QUERY OK source="sources" db=0.3ms idle=340.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" = ?) [9] 11:14:11.799 [debug] QUERY OK source="media_profiles" db=0.2ms idle=341.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:14:11.800 [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 [24448] 11:14:11.829 [debug] QUERY OK source="media_metadata" db=0.0ms queue=0.1ms idle=31.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" = ?) [24448] 11:14:11.829 [debug] QUERY OK source="media_profiles" db=0.2ms idle=31.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:14:11.830 [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 [] 11:14:11.830 [debug] QUERY OK source="settings" db=0.1ms idle=30.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:11.831 [debug] Running yt-dlp command for action: get_downloadable_status 11:14:11.836 [debug] QUERY OK source="settings" db=0.2ms 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 [] 11:14:11.836 [debug] QUERY OK source="settings" db=0.1ms idle=7.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:14:11.837 [debug] QUERY OK source="settings" db=0.1ms idle=7.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:14:11.837 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZpTn71P2mn0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/22/8c/228cac9e0b54c3ab59408ccbdba6abf280df01637397b03002d717b8b8fbbd13.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:14:15.024 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZpTn71P2mn0 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/22/8c/228cac9e0b54c3ab59408ccbdba6abf280df01637397b03002d717b8b8fbbd13.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: [youtube] ZpTn71P2mn0: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] ZpTn71P2mn0: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 11:14:15.024 [debug] Running yt-dlp command for action: download 11:14:15.025 [debug] QUERY OK source="settings" db=0.2ms idle=1566.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:15.025 [debug] QUERY OK source="settings" db=0.1ms idle=1566.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:15.025 [debug] QUERY OK source="settings" db=0.3ms idle=1567.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:15.026 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZpTn71P2mn0 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/28/7f/287fe9c4526e58181699ba45cbaee232b688e170906f4c92f4a239a42fcdb409.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:14:18.795 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZpTn71P2mn0 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/28/7f/287fe9c4526e58181699ba45cbaee232b688e170906f4c92f4a239a42fcdb409.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 WARNING: [youtube] ZpTn71P2mn0: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] ZpTn71P2mn0: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 11:14:18.796 [error] yt-dlp download error for media item #24448: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] ZpTn71P2mn0: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] ZpTn71P2mn0: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 11:14:18.797 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":24448},"id":7391,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6998712,"event":"job:exception","queue_time":452557,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 11:14:22.460 [info] {"source":"oban","duration":921,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:14:46.870 [info] {"args":{"id":24005},"id":7382,"meta":{},"system_time":1766574886870069295,"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"]} 11:14:46.870 [debug] QUERY OK source="media_items" db=0.2ms idle=411.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [24005] 11:14:46.870 [info] User scripts lifecyle file either not present or is empty. Skipping. 11:14:46.871 [debug] QUERY OK source="sources" db=0.2ms idle=412.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" = ?) [8] 11:14:46.871 [debug] QUERY OK source="media_profiles" db=0.1ms idle=413.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:14:46.872 [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 [24005] 11:14:46.873 [debug] QUERY OK source="media_metadata" db=0.1ms idle=2.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" = ?) [24005] 11:14:46.873 [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] 11:14:46.873 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:14:46.874 [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 [] 11:14:46.874 [debug] Running yt-dlp command for action: get_downloadable_status 11:14:46.875 [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 [] 11:14:46.875 [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 [] 11:14:46.875 [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 [] 11:14:46.875 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/iF4PC3Uul0c --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/2b/a9/2ba9e88c75e9eb265997d0b71040d490fdc3a16e42d0292c7a9c39f221a69d37.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:14:49.977 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/iF4PC3Uul0c --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/2b/a9/2ba9e88c75e9eb265997d0b71040d490fdc3a16e42d0292c7a9c39f221a69d37.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: [youtube] iF4PC3Uul0c: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] iF4PC3Uul0c: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 11:14:49.977 [debug] Running yt-dlp command for action: download 11:14:49.978 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1519.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:49.978 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=1520.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:49.979 [debug] QUERY OK source="settings" db=0.1ms idle=1520.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:49.979 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/iF4PC3Uul0c --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/3a/6e/3a6eec61566b92bba0330ce608cdf8198229786aef0457d3600bf87f42a32308.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:14:52.463 [info] {"source":"oban","duration":1990,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:14:53.335 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/iF4PC3Uul0c --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/3a/6e/3a6eec61566b92bba0330ce608cdf8198229786aef0457d3600bf87f42a32308.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 WARNING: [youtube] iF4PC3Uul0c: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] iF4PC3Uul0c: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 11:14:53.335 [error] yt-dlp download error for media item #24005: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] iF4PC3Uul0c: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] iF4PC3Uul0c: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 11:14:53.336 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":24005},"id":7382,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6465420,"event":"job:exception","queue_time":614019,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 11:15:00.124 [info] {"source":"oban","duration":256,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:15:22.466 [info] {"source":"oban","duration":1192,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:15:52.467 [info] {"source":"oban","duration":1631,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:16:00.125 [info] {"source":"oban","duration":268,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:16:22.469 [info] {"source":"oban","duration":1314,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:16:52.472 [info] {"source":"oban","duration":1647,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:17:00.127 [info] {"source":"oban","duration":686,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:17:22.473 [info] {"source":"oban","duration":1411,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:17:52.475 [info] {"source":"oban","duration":1607,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:18:00.128 [info] {"source":"oban","duration":580,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:18:22.477 [info] {"source":"oban","duration":1138,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:18:25.508 [info] {"args":{"id":24428},"id":7389,"meta":{},"system_time":1766575105508855643,"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"]} 11:18:25.509 [debug] QUERY OK source="media_items" db=0.3ms idle=1046.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" = ?) [24428] 11:18:25.509 [info] User scripts lifecyle file either not present or is empty. Skipping. 11:18:25.510 [debug] QUERY OK source="sources" db=0.1ms queue=0.1ms idle=1047.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 11:18:25.510 [debug] QUERY OK source="media_profiles" db=0.3ms idle=1011.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] 11:18:25.511 [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 [24428] 11:18:25.511 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [24428] 11:18:25.512 [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] 11:18:25.512 [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 [] 11:18:25.513 [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 [] 11:18:25.513 [debug] Running yt-dlp command for action: get_downloadable_status 11:18:25.514 [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 [] 11:18:25.514 [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 [] 11:18:25.514 [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 [] 11:18:25.514 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=c0A_62sgbms --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c4/73/c47326d1df5af20260f522a49b187c06d96e964b179cfa3afb3fcbb689e868ab.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:18:28.943 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=c0A_62sgbms --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c4/73/c47326d1df5af20260f522a49b187c06d96e964b179cfa3afb3fcbb689e868ab.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: [youtube] c0A_62sgbms: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] c0A_62sgbms: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 11:18:28.943 [debug] Running yt-dlp command for action: download 11:18:28.944 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1481.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:18:28.944 [debug] QUERY OK source="settings" db=0.1ms idle=1482.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:18:28.945 [debug] QUERY OK source="settings" db=0.2ms idle=1482.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:18:28.945 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=c0A_62sgbms --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/22/dc/22dc0c0c7f91c07cfc47d33c3d365adbb3996cfd965ac0bda8593ac78926177e.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:18:32.616 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=c0A_62sgbms --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/22/dc/22dc0c0c7f91c07cfc47d33c3d365adbb3996cfd965ac0bda8593ac78926177e.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 WARNING: [youtube] c0A_62sgbms: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] c0A_62sgbms: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 11:18:32.617 [error] yt-dlp download error for media item #24428: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] c0A_62sgbms: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] c0A_62sgbms: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 11:18:32.618 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":24428},"id":7389,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":7108483,"event":"job:exception","queue_time":648220,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 11:18:52.480 [info] {"source":"oban","duration":1936,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:19:00.129 [info] {"source":"oban","duration":334,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:19:22.482 [info] {"source":"oban","duration":1549,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:19:52.484 [info] {"source":"oban","duration":1511,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:20:00.130 [info] {"source":"oban","duration":339,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:20:22.486 [info] {"source":"oban","duration":1339,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:20:52.488 [info] {"source":"oban","duration":1084,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:21:00.131 [info] {"source":"oban","duration":319,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:21:22.491 [info] {"source":"oban","duration":1883,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:21:52.493 [info] {"source":"oban","duration":1293,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:22:00.132 [info] {"source":"oban","duration":588,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:22:22.495 [info] {"source":"oban","duration":1513,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:22:52.497 [info] {"source":"oban","duration":1374,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:23:00.133 [info] {"source":"oban","duration":384,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:23:22.499 [info] {"source":"oban","duration":1183,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:23:52.501 [info] {"source":"oban","duration":998,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:24:00.134 [info] {"source":"oban","duration":475,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:24:22.503 [info] {"source":"oban","duration":1189,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:24:52.505 [info] {"source":"oban","duration":1303,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:24:56.320 [info] {"args":{"id":23902},"id":7360,"meta":{},"system_time":1766575496320481001,"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"]} 11:24:56.321 [debug] QUERY OK source="media_items" db=0.2ms idle=1857.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" = ?) [23902] 11:24:56.321 [info] User scripts lifecyle file either not present or is empty. Skipping. 11:24:56.321 [debug] QUERY OK source="sources" db=0.2ms idle=1857.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" = ?) [8] 11:24:56.321 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 11:24:56.322 [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 [23902] 11:24:56.330 [debug] QUERY OK source="media_metadata" db=0.1ms idle=9.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" = ?) [23902] 11:24:56.330 [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] 11:24:56.331 [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 [] 11:24:56.331 [debug] QUERY OK source="settings" db=0.1ms idle=9.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:24:56.331 [debug] Running yt-dlp command for action: get_downloadable_status 11:24:56.331 [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 [] 11:24:56.332 [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 [] 11:24:56.332 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:24:56.333 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3Fbe09YkgRE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/51/2a/512a53d6bdd726d47da810fa97275f1f50937d971e407ac535c16edc52182288.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:24:59.422 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3Fbe09YkgRE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/51/2a/512a53d6bdd726d47da810fa97275f1f50937d971e407ac535c16edc52182288.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: [youtube] 3Fbe09YkgRE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 3Fbe09YkgRE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 11:24:59.423 [debug] Running yt-dlp command for action: download 11:24:59.423 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1959.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:24:59.424 [debug] QUERY OK source="settings" db=0.2ms idle=1960.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:24:59.424 [debug] QUERY OK source="settings" db=0.1ms idle=1960.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:24:59.424 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3Fbe09YkgRE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/67/53/675393114c808d2f627ea63abf7318ccb12cf764c84676f569dd608d934b4390.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:25:00.135 [info] {"source":"oban","duration":382,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:25:03.146 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=3Fbe09YkgRE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/67/53/675393114c808d2f627ea63abf7318ccb12cf764c84676f569dd608d934b4390.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 WARNING: [youtube] 3Fbe09YkgRE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 3Fbe09YkgRE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 11:25:03.146 [error] yt-dlp download error for media item #23902: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] 3Fbe09YkgRE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] 3Fbe09YkgRE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 11:25:03.147 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23902},"id":7360,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6826414,"event":"job:exception","queue_time":434255,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 11:25:22.508 [info] {"source":"oban","duration":1898,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:25:52.510 [info] {"source":"oban","duration":1506,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:25:53.438 [info] {"args":{"id":23982},"id":7372,"meta":{},"system_time":1766575553438150173,"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"]} 11:25:53.438 [debug] QUERY OK source="media_items" db=0.3ms idle=975.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" = ?) [23982] 11:25:53.439 [info] User scripts lifecyle file either not present or is empty. Skipping. 11:25:53.439 [debug] QUERY OK source="sources" db=0.2ms idle=975.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 11:25:53.440 [debug] QUERY OK source="media_profiles" db=0.3ms queue=0.1ms idle=928.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] 11:25:53.440 [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 [23982] 11:25:53.441 [debug] QUERY OK source="media_metadata" db=0.1ms idle=3.5ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [23982] 11:25:53.442 [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] 11:25:53.442 [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 [] 11:25:53.442 [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 [] 11:25:53.443 [debug] Running yt-dlp command for action: get_downloadable_status 11:25:53.443 [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 [] 11:25:53.444 [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 [] 11:25:53.444 [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 [] 11:25:53.444 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/DqQMMZVWiuI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b0/1d/b01dd09c307e34c48ba19ec375f09065f0926c6842eedcbddfd5daf2a9515da8.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:25:56.417 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/DqQMMZVWiuI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/b0/1d/b01dd09c307e34c48ba19ec375f09065f0926c6842eedcbddfd5daf2a9515da8.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: [youtube] DqQMMZVWiuI: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] DqQMMZVWiuI: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 11:25:56.418 [debug] Running yt-dlp command for action: download 11:25:56.418 [debug] QUERY OK source="settings" db=0.3ms idle=1955.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:25:56.419 [debug] QUERY OK source="settings" db=0.1ms idle=1955.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:25:56.419 [debug] QUERY OK source="settings" db=0.0ms idle=1955.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:25:56.419 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/DqQMMZVWiuI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/ec/e1/ece1f62bb289777a905ab53f120a5410c82fb26ec2452ca40bcc1bb3ee832665.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:25:59.914 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/DqQMMZVWiuI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/ec/e1/ece1f62bb289777a905ab53f120a5410c82fb26ec2452ca40bcc1bb3ee832665.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 WARNING: [youtube] DqQMMZVWiuI: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] DqQMMZVWiuI: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 11:25:59.914 [error] yt-dlp download error for media item #23982: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] DqQMMZVWiuI: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] DqQMMZVWiuI: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 11:25:59.915 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23982},"id":7372,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6476914,"event":"job:exception","queue_time":655782,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 11:26:00.136 [info] {"source":"oban","duration":300,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:26:22.513 [info] {"source":"oban","duration":1715,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:26:52.515 [info] {"source":"oban","duration":844,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:27:00.137 [info] {"source":"oban","duration":375,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:27:22.517 [info] {"source":"oban","duration":1343,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:27:52.520 [info] {"source":"oban","duration":1610,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:28:00.138 [info] {"source":"oban","duration":236,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:28:22.522 [info] {"source":"oban","duration":1284,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:28:52.524 [info] {"source":"oban","duration":1577,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:29:00.140 [info] {"source":"oban","duration":411,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:29:22.526 [info] {"source":"oban","duration":1195,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:29:52.528 [info] {"source":"oban","duration":1308,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:30:00.141 [info] {"source":"oban","duration":424,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:30:01.966 [info] {"args":{"id":24446},"id":7390,"meta":{},"system_time":1766575801966063871,"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"]} 11:30:01.966 [debug] QUERY OK source="media_items" db=0.2ms idle=1502.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" = ?) [24446] 11:30:01.966 [info] User scripts lifecyle file either not present or is empty. Skipping. 11:30:01.967 [debug] QUERY OK source="sources" db=0.2ms idle=1009.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 11:30:01.967 [debug] QUERY OK source="media_profiles" db=0.2ms idle=503.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] 11:30:01.968 [debug] QUERY OK source="media_items" db=0.2ms 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 [24446] 11:30:01.969 [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" = ?) [24446] 11:30:01.969 [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] 11:30:01.970 [debug] QUERY OK source="settings" db=0.1ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:30:01.970 [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 [] 11:30:01.970 [debug] Running yt-dlp command for action: get_downloadable_status 11:30:01.971 [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 [] 11:30:01.971 [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 [] 11:30:01.971 [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 [] 11:30:01.972 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4D69LDs_izI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/81/1a/811a9477ca064deb4eb7fae262bf61b6b5707e1d796b840042805fe04fac8e81.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:30:05.258 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4D69LDs_izI --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/81/1a/811a9477ca064deb4eb7fae262bf61b6b5707e1d796b840042805fe04fac8e81.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 11:30:05.258 [debug] Running yt-dlp command for action: download 11:30:05.258 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1795.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:30:05.259 [debug] QUERY OK source="settings" db=0.2ms idle=1795.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:30:05.259 [debug] QUERY OK source="settings" db=0.1ms idle=1795.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:30:05.259 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4D69LDs_izI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/cc/a8/cca804e4a4fb65d60b85afea8f24e2f94d369c0221d04961281f341383993329.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:30:08.690 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=4D69LDs_izI --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/cc/a8/cca804e4a4fb65d60b85afea8f24e2f94d369c0221d04961281f341383993329.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 WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 11:30:08.691 [error] yt-dlp download error for media item #24446: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 11:30:08.692 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":24446},"id":7390,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6725361,"event":"job:exception","queue_time":369314,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 11:30:22.530 [info] {"source":"oban","duration":1229,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:30:52.532 [info] {"source":"oban","duration":1285,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:31:00.142 [info] {"source":"oban","duration":424,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:31:22.534 [info] {"source":"oban","duration":1278,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:31:52.537 [info] {"source":"oban","duration":1706,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:32:00.144 [info] {"source":"oban","duration":703,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:32:22.539 [info] {"source":"oban","duration":936,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:32:52.541 [info] {"source":"oban","duration":1587,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:33:00.146 [info] {"source":"oban","duration":1258,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:33:08.333 [info] {"args":{"id":24163},"id":7385,"meta":{},"system_time":1766575988333727274,"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"]} 11:33:08.334 [debug] QUERY OK source="media_items" db=0.1ms idle=1870.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" = ?) [24163] 11:33:08.334 [info] User scripts lifecyle file either not present or is empty. Skipping. 11:33:08.334 [debug] QUERY OK source="sources" db=0.1ms idle=1010.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" = ?) [9] 11:33:08.335 [debug] QUERY OK source="media_profiles" db=0.1ms idle=871.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] 11:33:08.335 [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 [24163] 11:33:08.352 [debug] QUERY OK source="media_metadata" db=0.2ms idle=18.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" = ?) [24163] 11:33:08.352 [debug] QUERY OK source="media_profiles" db=0.1ms idle=18.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] 11:33:08.353 [debug] QUERY OK source="settings" db=0.1ms idle=18.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:33:08.353 [debug] QUERY OK source="settings" db=0.1ms idle=18.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:33:08.353 [debug] Running yt-dlp command for action: get_downloadable_status 11:33:08.354 [debug] QUERY OK source="settings" db=0.0ms 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 [] 11:33:08.354 [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 [] 11:33:08.354 [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 [] 11:33:08.354 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZRfC_M8d4a4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3d/20/3d201512b3767de6526ca95169a2d0f22118addf16b7d44781eac6418f2c2edc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:33:11.534 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZRfC_M8d4a4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/3d/20/3d201512b3767de6526ca95169a2d0f22118addf16b7d44781eac6418f2c2edc.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: [youtube] ZRfC_M8d4a4: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] ZRfC_M8d4a4: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 11:33:11.534 [debug] Running yt-dlp command for action: download 11:33:11.534 [debug] QUERY OK source="settings" db=0.2ms idle=201.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:33:11.535 [debug] QUERY OK source="settings" db=0.1ms idle=71.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:33:11.535 [debug] QUERY OK source="settings" db=0.1ms idle=71.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:33:11.535 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZRfC_M8d4a4 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ea/19/ea19b7d854df6b39677b05a90e9b7ae8b07ffa0a1e3b84ba609a04f354fdf180.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:33:14.918 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=ZRfC_M8d4a4 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/ea/19/ea19b7d854df6b39677b05a90e9b7ae8b07ffa0a1e3b84ba609a04f354fdf180.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 WARNING: [youtube] ZRfC_M8d4a4: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] ZRfC_M8d4a4: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 11:33:14.918 [error] yt-dlp download error for media item #24163: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] ZRfC_M8d4a4: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] ZRfC_M8d4a4: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 11:33:14.919 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":24163},"id":7385,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6584931,"event":"job:exception","queue_time":331175,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 11:33:22.544 [info] {"source":"oban","duration":1581,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:33:52.546 [info] {"source":"oban","duration":1089,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:34:00.148 [info] {"source":"oban","duration":601,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:34:22.548 [info] {"source":"oban","duration":1501,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:34:52.550 [info] {"source":"oban","duration":700,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:35:00.150 [info] {"source":"oban","duration":719,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:35:16.590 [info] {"args":{"id":23987},"id":7375,"meta":{},"system_time":1766576116590076517,"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"]} 11:35:16.590 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=127.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" = ?) [23987] 11:35:16.590 [info] User scripts lifecyle file either not present or is empty. Skipping. 11:35:16.591 [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" = ?) [8] 11:35:16.591 [debug] QUERY OK source="media_profiles" db=0.1ms idle=128.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:35:16.592 [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 [23987] 11:35:16.593 [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" = ?) [23987] 11:35:16.593 [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] 11:35:16.593 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:35:16.594 [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 [] 11:35:16.594 [debug] Running yt-dlp command for action: get_downloadable_status 11:35:16.614 [debug] QUERY OK source="settings" db=0.1ms idle=22.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:35:16.614 [debug] QUERY OK source="settings" db=0.1ms 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 [] 11:35:16.615 [debug] QUERY OK source="settings" db=0.0ms idle=21.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:35:16.615 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/C73kKbeW6LE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/cd/f7/cdf7b842f73864fde603ad63e86d4f340ccc74bd586fd194a52746fcc66bc38a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:35:19.733 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/C73kKbeW6LE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/cd/f7/cdf7b842f73864fde603ad63e86d4f340ccc74bd586fd194a52746fcc66bc38a.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: [youtube] C73kKbeW6LE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] C73kKbeW6LE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 11:35:19.734 [debug] Running yt-dlp command for action: download 11:35:19.734 [debug] QUERY OK source="settings" db=0.2ms idle=1270.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:35:19.734 [debug] QUERY OK source="settings" db=0.1ms idle=1271.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:35:19.735 [debug] QUERY OK source="settings" db=0.1ms idle=1271.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:35:19.735 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/C73kKbeW6LE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/55/d5/55d5b05ef5ff49330e370628e7e0738d43ae6233fb1e93414a0a596e625f3444.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:35:22.552 [info] {"source":"oban","duration":1356,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:35:23.119 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/C73kKbeW6LE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/55/d5/55d5b05ef5ff49330e370628e7e0738d43ae6233fb1e93414a0a596e625f3444.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 WARNING: [youtube] C73kKbeW6LE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] C73kKbeW6LE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 11:35:23.119 [error] yt-dlp download error for media item #23987: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] C73kKbeW6LE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] C73kKbeW6LE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 11:35:23.121 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23987},"id":7375,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6530116,"event":"job:exception","queue_time":13487,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 11:35:25.607 [info] {"args":{"id":23972},"id":7368,"meta":{},"system_time":1766576125607203856,"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"]} 11:35:25.607 [debug] QUERY OK source="media_items" db=0.2ms idle=1144.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" = ?) [23972] 11:35:25.608 [info] User scripts lifecyle file either not present or is empty. Skipping. 11:35:25.608 [debug] QUERY OK source="sources" db=0.1ms idle=1144.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" = ?) [8] 11:35:25.608 [debug] QUERY OK source="media_profiles" db=0.3ms idle=1009.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] 11:35:25.609 [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 [23972] 11:35:25.610 [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" = ?) [23972] 11:35:25.610 [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] 11:35:25.610 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:35:25.611 [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 [] 11:35:25.611 [debug] Running yt-dlp command for action: get_downloadable_status 11:35:25.612 [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 [] 11:35:25.612 [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 [] 11:35:25.612 [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 [] 11:35:25.612 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/vtdzu1-Y8Rs --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4c/92/4c926a501707d9c2d6fd6da76d48e8e0fe3a1057ebc41cb28282bee5cc2ae003.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:35:28.644 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/vtdzu1-Y8Rs --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4c/92/4c926a501707d9c2d6fd6da76d48e8e0fe3a1057ebc41cb28282bee5cc2ae003.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: [youtube] vtdzu1-Y8Rs: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] vtdzu1-Y8Rs: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 11:35:28.645 [debug] Running yt-dlp command for action: download 11:35:28.645 [debug] QUERY OK source="settings" db=0.2ms idle=1181.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:35:28.645 [debug] QUERY OK source="settings" db=0.1ms idle=1182.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:35:28.646 [debug] QUERY OK source="settings" db=0.1ms idle=1182.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:35:28.646 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/vtdzu1-Y8Rs --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/d2/a4/d2a4b4626af59d52da5658c3b2e62c0c2a5caf376fc55211b61041fd30fc5617.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:35:31.647 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/vtdzu1-Y8Rs --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/d2/a4/d2a4b4626af59d52da5658c3b2e62c0c2a5caf376fc55211b61041fd30fc5617.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 WARNING: [youtube] vtdzu1-Y8Rs: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] vtdzu1-Y8Rs: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 11:35:31.647 [error] yt-dlp download error for media item #23972: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] vtdzu1-Y8Rs: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] vtdzu1-Y8Rs: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 11:35:31.648 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23972},"id":7368,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6040716,"event":"job:exception","queue_time":677709,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 11:35:52.554 [info] {"source":"oban","duration":1036,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:36:00.151 [info] {"source":"oban","duration":487,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:36:22.557 [info] {"source":"oban","duration":1811,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:36:52.559 [info] {"source":"oban","duration":1031,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:37:00.152 [info] {"source":"oban","duration":371,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:37:22.562 [info] {"source":"oban","duration":1644,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:37:52.563 [info] {"source":"oban","duration":1008,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:38:00.154 [info] {"source":"oban","duration":1065,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:38:22.565 [info] {"source":"oban","duration":1538,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:38:52.567 [info] {"source":"oban","duration":946,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:39:00.155 [info] {"source":"oban","duration":576,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:39:22.569 [info] {"source":"oban","duration":927,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:39:52.571 [info] {"source":"oban","duration":1238,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:39:59.172 [info] {"args":{"id":23946},"id":7365,"meta":{},"system_time":1766576399172189604,"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"]} 11:39:59.172 [debug] QUERY OK source="media_items" db=0.2ms idle=708.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" = ?) [23946] 11:39:59.172 [info] User scripts lifecyle file either not present or is empty. Skipping. 11:39:59.173 [debug] QUERY OK source="sources" db=0.2ms idle=709.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 11:39:59.173 [debug] QUERY OK source="media_profiles" db=0.2ms idle=709.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] 11:39:59.174 [debug] QUERY OK source="media_items" db=0.2ms 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 [23946] 11:39:59.175 [debug] QUERY OK source="media_metadata" db=0.1ms idle=2.8ms SELECT m0."id", m0."metadata_filepath", m0."thumbnail_filepath", m0."media_item_id", m0."inserted_at", m0."updated_at", m0."media_item_id" FROM "media_metadata" AS m0 WHERE (m0."media_item_id" = ?) [23946] 11:39:59.175 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 11:39:59.176 [debug] QUERY OK source="settings" db=0.1ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:39:59.176 [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 [] 11:39:59.176 [debug] Running yt-dlp command for action: get_downloadable_status 11:39:59.177 [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 [] 11:39:59.177 [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 [] 11:39:59.177 [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 [] 11:39:59.177 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/fL-99vJNHTE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/73/23/7323552516736e0122d2ddc513cae5c988f78a472282b476e164a5a2ddec535a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:40:00.157 [info] {"source":"oban","duration":930,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:40:02.227 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/fL-99vJNHTE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/73/23/7323552516736e0122d2ddc513cae5c988f78a472282b476e164a5a2ddec535a.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: [youtube] fL-99vJNHTE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] fL-99vJNHTE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 11:40:02.227 [debug] Running yt-dlp command for action: download 11:40:02.228 [debug] QUERY OK source="settings" db=0.3ms idle=1764.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:40:02.228 [debug] QUERY OK source="settings" db=0.1ms idle=1764.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:40:02.229 [debug] QUERY OK source="settings" db=0.2ms idle=1059.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:40:02.229 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/fL-99vJNHTE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/b5/c8/b5c80fda53b8f294ebe4fb909547f7246a11ca97a0d9a59509675f422ae6e5bb.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:40:05.776 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/fL-99vJNHTE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/b5/c8/b5c80fda53b8f294ebe4fb909547f7246a11ca97a0d9a59509675f422ae6e5bb.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 WARNING: [youtube] fL-99vJNHTE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] fL-99vJNHTE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 11:40:05.776 [error] yt-dlp download error for media item #23946: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] fL-99vJNHTE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] fL-99vJNHTE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 11:40:05.777 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23946},"id":7365,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6604619,"event":"job:exception","queue_time":303351,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 11:40:22.574 [info] {"source":"oban","duration":1761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:40:52.576 [info] {"source":"oban","duration":1508,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:41:00.159 [info] {"source":"oban","duration":663,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:41:22.578 [info] {"source":"oban","duration":940,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:41:52.580 [info] {"source":"oban","duration":790,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:42:00.161 [info] {"source":"oban","duration":776,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:42:22.582 [info] {"source":"oban","duration":842,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:42:52.584 [info] {"source":"oban","duration":1568,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:43:00.162 [info] {"source":"oban","duration":513,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:43:22.586 [info] {"source":"oban","duration":1398,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:43:52.588 [info] {"source":"oban","duration":1565,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:44:00.163 [info] {"source":"oban","duration":336,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:44:22.590 [info] {"source":"oban","duration":1306,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:44:34.724 [info] {"args":{"id":23897},"id":7359,"meta":{},"system_time":1766576674724146132,"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"]} 11:44:34.724 [debug] QUERY OK source="media_items" db=0.2ms idle=260.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" = ?) [23897] 11:44:34.725 [info] User scripts lifecyle file either not present or is empty. Skipping. 11:44:34.725 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=261.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 11:44:34.726 [debug] QUERY OK source="media_profiles" db=0.3ms idle=261.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] 11:44:34.726 [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 [23897] 11:44:34.727 [debug] QUERY OK source="media_metadata" db=0.0ms idle=2.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" = ?) [23897] 11:44:34.727 [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] 11:44:34.727 [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 [] 11:44:34.728 [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 [] 11:44:34.728 [debug] Running yt-dlp command for action: get_downloadable_status 11:44:34.728 [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 [] 11:44:34.729 [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:44:34.729 [debug] QUERY OK source="settings" db=0.2ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:44:34.729 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gIeiwnnkWng --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4d/32/4d325ae4c74802963e97a3be7b3cf95d4ee8c8731286f4e554ea3ebd1a7a3e19.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:44:38.202 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gIeiwnnkWng --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/4d/32/4d325ae4c74802963e97a3be7b3cf95d4ee8c8731286f4e554ea3ebd1a7a3e19.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: [youtube] gIeiwnnkWng: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] gIeiwnnkWng: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 11:44:38.202 [debug] Running yt-dlp command for action: download 11:44:38.203 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1739.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:44:38.203 [debug] QUERY OK source="settings" db=0.2ms idle=1739.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:44:38.204 [debug] QUERY OK source="settings" db=0.2ms idle=1740.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:44:38.204 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gIeiwnnkWng --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/36/ea/36ead51dfe4007f51f60aa651f36a0520af37ab091906e1ab46087220cd3c16c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:44:41.923 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=gIeiwnnkWng --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/36/ea/36ead51dfe4007f51f60aa651f36a0520af37ab091906e1ab46087220cd3c16c.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 WARNING: [youtube] gIeiwnnkWng: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] gIeiwnnkWng: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 11:44:41.924 [error] yt-dlp download error for media item #23897: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] gIeiwnnkWng: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] gIeiwnnkWng: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 11:44:41.925 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23897},"id":7359,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":7200119,"event":"job:exception","queue_time":114448,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 11:44:52.593 [info] {"source":"oban","duration":1849,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:45:00.165 [info] {"source":"oban","duration":645,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:45:22.595 [info] {"source":"oban","duration":1087,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:45:52.597 [info] {"source":"oban","duration":1473,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:45:58.894 [info] {"args":{"id":24458},"id":7392,"meta":{},"system_time":1766576758894675177,"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"]} 11:45:58.895 [debug] QUERY OK source="media_items" db=0.3ms idle=1009.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" = ?) [24458] 11:45:58.895 [info] User scripts lifecyle file either not present or is empty. Skipping. 11:45:58.896 [debug] QUERY OK source="sources" db=0.2ms idle=432.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 11:45:58.896 [debug] QUERY OK source="media_profiles" db=0.1ms idle=432.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] 11:45:58.896 [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 [24458] 11:45:58.897 [debug] QUERY OK source="media_metadata" db=0.1ms idle=2.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" = ?) [24458] 11:45:58.897 [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] 11:45:58.898 [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 [] 11:45:58.898 [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 [] 11:45:58.898 [debug] Running yt-dlp command for action: get_downloadable_status 11:45:58.899 [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 [] 11:45:58.899 [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 [] 11:45:58.899 [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 [] 11:45:58.900 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=u_GVpZ79oZY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/64/c8/64c8bd4a7a1135e1ccdf8946ed2483fb959dbda1b6ff00a38db395c63e8a467f.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:46:00.166 [info] {"source":"oban","duration":279,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:46:02.026 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=u_GVpZ79oZY --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/64/c8/64c8bd4a7a1135e1ccdf8946ed2483fb959dbda1b6ff00a38db395c63e8a467f.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: [youtube] u_GVpZ79oZY: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] u_GVpZ79oZY: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 11:46:02.027 [debug] Running yt-dlp command for action: download 11:46:02.027 [debug] QUERY OK source="settings" db=0.2ms idle=1563.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:46:02.027 [debug] QUERY OK source="settings" db=0.1ms idle=1563.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:46:02.028 [debug] QUERY OK source="settings" db=0.1ms idle=1136.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:46:02.028 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=u_GVpZ79oZY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/06/ed/06ed7fc18d31fb53a7ace42ad2527a5392e97920f91be344b17ad5c0c98eb667.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:46:05.852 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=u_GVpZ79oZY --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/06/ed/06ed7fc18d31fb53a7ace42ad2527a5392e97920f91be344b17ad5c0c98eb667.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 WARNING: [youtube] u_GVpZ79oZY: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] u_GVpZ79oZY: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 11:46:05.852 [error] yt-dlp download error for media item #24458: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] u_GVpZ79oZY: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] u_GVpZ79oZY: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 11:46:05.854 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":24458},"id":7392,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6958480,"event":"job:exception","queue_time":775692,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 11:46:22.599 [info] {"source":"oban","duration":1210,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:46:52.601 [info] {"source":"oban","duration":1159,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:47:00.167 [info] {"source":"oban","duration":350,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:47:22.604 [info] {"source":"oban","duration":1739,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:47:52.605 [info] {"source":"oban","duration":1013,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:48:00.168 [info] {"source":"oban","duration":607,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:48:22.607 [info] {"source":"oban","duration":1530,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:48:52.609 [info] {"source":"oban","duration":1352,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:49:00.170 [info] {"source":"oban","duration":586,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:49:22.611 [info] {"source":"oban","duration":1018,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:49:52.613 [info] {"source":"oban","duration":1314,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:50:00.172 [info] {"source":"oban","duration":579,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:50:22.615 [info] {"source":"oban","duration":801,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:50:52.616 [info] {"source":"oban","duration":659,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:51:00.173 [info] {"source":"oban","duration":483,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:51:22.618 [info] {"source":"oban","duration":1033,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:51:52.620 [info] {"source":"oban","duration":891,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:52:00.175 [info] {"source":"oban","duration":454,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:52:10.664 [info] {"args":{"id":23978},"id":7371,"meta":{},"system_time":1766577130664098662,"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"]} 11:52:10.664 [debug] QUERY OK source="media_items" db=0.3ms idle=201.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" = ?) [23978] 11:52:10.664 [info] User scripts lifecyle file either not present or is empty. Skipping. 11:52:10.665 [debug] QUERY OK source="sources" db=0.2ms idle=201.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" = ?) [8] 11:52:10.665 [debug] QUERY OK source="media_profiles" db=0.2ms idle=201.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] 11:52:10.666 [debug] QUERY OK source="media_items" db=0.2ms 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 [23978] 11:52:10.683 [debug] QUERY OK source="media_metadata" db=0.2ms queue=0.1ms idle=18.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" = ?) [23978] 11:52:10.683 [debug] QUERY OK source="media_profiles" db=0.1ms idle=18.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:52:10.684 [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 [] 11:52:10.684 [debug] QUERY OK source="settings" db=0.1ms idle=18.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:52:10.684 [debug] Running yt-dlp command for action: get_downloadable_status 11:52:10.685 [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 [] 11:52:10.685 [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 [] 11:52:10.685 [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:52:10.685 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/1arhAIkIOkQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c7/38/c7381104ec8a0ce7186f460742f592079a8d57dfa3fcc0cc0ada3b85d36e23da.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:52:13.610 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/1arhAIkIOkQ --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/c7/38/c7381104ec8a0ce7186f460742f592079a8d57dfa3fcc0cc0ada3b85d36e23da.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: [youtube] 1arhAIkIOkQ: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 1arhAIkIOkQ: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 11:52:13.611 [debug] Running yt-dlp command for action: download 11:52:13.611 [debug] QUERY OK source="settings" db=0.3ms idle=1147.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:52:13.612 [debug] QUERY OK source="settings" db=0.1ms idle=1148.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:52:13.612 [debug] QUERY OK source="settings" db=0.1ms idle=1148.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:52:13.612 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/1arhAIkIOkQ --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/f1/35/f13591fd9f086c0603353193d8c2b34c4b200f833ea64d7e3d8060bb8e30dc94.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:52:16.884 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/1arhAIkIOkQ --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/f1/35/f13591fd9f086c0603353193d8c2b34c4b200f833ea64d7e3d8060bb8e30dc94.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 WARNING: [youtube] 1arhAIkIOkQ: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 1arhAIkIOkQ: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 11:52:16.884 [error] yt-dlp download error for media item #23978: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] 1arhAIkIOkQ: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] 1arhAIkIOkQ: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 11:52:16.885 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23978},"id":7371,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6220915,"event":"job:exception","queue_time":592003,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 11:52:22.622 [info] {"source":"oban","duration":988,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:52:52.624 [info] {"source":"oban","duration":1445,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:53:00.177 [info] {"source":"oban","duration":852,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:53:22.627 [info] {"source":"oban","duration":1619,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:53:52.628 [info] {"source":"oban","duration":1639,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:54:00.178 [info] {"source":"oban","duration":434,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:54:22.631 [info] {"source":"oban","duration":1241,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:54:52.633 [info] {"source":"oban","duration":881,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:55:00.179 [info] {"source":"oban","duration":444,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:55:22.635 [info] {"source":"oban","duration":1006,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:55:52.638 [info] {"source":"oban","duration":2509,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:56:00.181 [info] {"source":"oban","duration":516,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:56:22.640 [info] {"source":"oban","duration":1232,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:56:52.642 [info] {"source":"oban","duration":1045,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:57:00.182 [info] {"source":"oban","duration":408,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:57:22.644 [info] {"source":"oban","duration":924,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:57:52.647 [info] {"source":"oban","duration":1613,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:58:00.183 [info] {"source":"oban","duration":352,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:58:22.647 [info] {"source":"oban","duration":659,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:58:52.648 [info] {"source":"oban","duration":665,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:59:00.184 [info] {"source":"oban","duration":448,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 11:59:22.650 [info] {"source":"oban","duration":987,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 11:59:28.554 [info] {"args":{"id":23991},"id":7377,"meta":{},"system_time":1766577568554152539,"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"]} 11:59:28.554 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=89.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" = ?) [23991] 11:59:28.555 [info] User scripts lifecyle file either not present or is empty. Skipping. 11:59:28.555 [debug] QUERY OK source="sources" db=0.2ms idle=90.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 11:59:28.555 [debug] QUERY OK source="media_profiles" db=0.1ms idle=90.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] 11:59:28.556 [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 [23991] 11:59:28.573 [debug] QUERY OK source="media_metadata" db=0.1ms idle=19.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" = ?) [23991] 11:59:28.573 [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] 11:59:28.574 [debug] QUERY OK source="settings" db=0.1ms idle=18.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 11:59:28.574 [debug] QUERY OK source="settings" db=0.1ms idle=18.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:59:28.574 [debug] Running yt-dlp command for action: get_downloadable_status 11:59:28.575 [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 [] 11:59:28.575 [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:59:28.575 [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 [] 11:59:28.575 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/BX5o0-gPP_c --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f6/93/f693714f14cf80706ffe61b30fe407c945ec160cc86be122972e1eaf0ccc6980.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:59:31.412 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/BX5o0-gPP_c --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f6/93/f693714f14cf80706ffe61b30fe407c945ec160cc86be122972e1eaf0ccc6980.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: [youtube] BX5o0-gPP_c: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] BX5o0-gPP_c: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 11:59:31.412 [debug] Running yt-dlp command for action: download 11:59:31.413 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=948.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:59:31.414 [debug] QUERY OK source="settings" db=0.2ms idle=949.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:59:31.414 [debug] QUERY OK source="settings" db=0.2ms idle=949.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:59:31.414 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/BX5o0-gPP_c --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/d3/d4/d3d4999b340565ca7ef33bb2d1538f85e0190d52e918a68e33f533cabb7fd2cb.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 11:59:34.904 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/BX5o0-gPP_c --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/d3/d4/d3d4999b340565ca7ef33bb2d1538f85e0190d52e918a68e33f533cabb7fd2cb.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 WARNING: [youtube] BX5o0-gPP_c: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] BX5o0-gPP_c: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 11:59:34.905 [error] yt-dlp download error for media item #23991: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] BX5o0-gPP_c: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] BX5o0-gPP_c: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 11:59:34.906 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23991},"id":7377,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6351049,"event":"job:exception","queue_time":774074,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 11:59:52.652 [info] {"source":"oban","duration":881,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:00:00.186 [info] {"source":"oban","duration":630,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:00:22.654 [info] {"source":"oban","duration":964,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:00:35.852 [info] GET / 12:00:35.852 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 12:00:35.853 [debug] QUERY OK source="settings" db=0.1ms idle=1388.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:00:35.853 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1388.8ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 12:00:35.853 [debug] QUERY OK source="sources" db=0.1ms idle=1389.0ms SELECT count(s0."id") FROM "sources" AS s0 [] 12:00:35.864 [debug] QUERY OK source="media_items" db=10.1ms idle=1170.7ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 12:00:35.866 [debug] QUERY OK source="media_items" db=2.1ms idle=178.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 12:00:35.866 [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 [] 12:00:35.867 [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 [] 12:00:35.867 [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 [] 12:00:35.869 [debug] QUERY OK source="tasks" db=0.2ms 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"] 12:00:35.870 [debug] QUERY OK source="media_items" db=0.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 (m0."media_filepath" IS NULL)) [] 12:00:35.870 [debug] QUERY OK source="media_items" db=0.3ms 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 INNER JOIN "sources" AS s1 ON s1."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] 12:00:35.871 [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" IN (?,?,?)) [3, 2, 7] 12:00:35.880 [debug] QUERY OK source="media_items" db=8.5ms idle=4.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 12:00:35.881 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms 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] 12:00:35.882 [debug] QUERY OK source="sources" db=0.2ms 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] 12:00:35.883 [info] Sent 200 in 30ms 12:00:52.656 [info] {"source":"oban","duration":963,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:01:00.188 [info] {"source":"oban","duration":720,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:01:22.659 [info] {"source":"oban","duration":1204,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:01:52.660 [info] {"source":"oban","duration":1130,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:02:00.189 [info] {"source":"oban","duration":284,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:02:22.663 [info] {"source":"oban","duration":1643,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:02:52.665 [info] {"source":"oban","duration":1635,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:03:00.190 [info] {"source":"oban","duration":234,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:03:22.667 [info] {"source":"oban","duration":1267,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:03:52.669 [info] {"source":"oban","duration":1072,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:04:00.191 [info] {"source":"oban","duration":342,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:04:19.152 [info] {"args":{"id":24001},"id":7381,"meta":{},"system_time":1766577859152813709,"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"]} 12:04:19.154 [debug] QUERY OK source="media_items" db=1.1ms idle=684.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" = ?) [24001] 12:04:19.154 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:04:19.156 [debug] QUERY OK source="sources" db=1.3ms queue=0.1ms idle=686.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 12:04:19.156 [debug] QUERY OK source="media_profiles" db=0.4ms idle=687.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:04:19.157 [debug] QUERY OK source="media_items" db=0.3ms idle=11.2ms SELECT 1 FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) LIMIT 1 [24001] 12:04:19.188 [debug] QUERY OK source="media_metadata" db=0.1ms queue=0.1ms idle=35.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" = ?) [24001] 12:04:19.188 [debug] QUERY OK source="media_profiles" db=0.2ms idle=33.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:04:19.189 [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 [] 12:04:19.189 [debug] QUERY OK source="settings" db=0.1ms idle=32.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:04:19.189 [debug] Running yt-dlp command for action: get_downloadable_status 12:04:19.190 [debug] QUERY OK source="settings" db=0.1ms idle=32.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:04:19.190 [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 [] 12:04:19.190 [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 [] 12:04:19.190 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/MozbAhlORls --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/68/a2/68a200b2c83987e8d4b6f81eba262448cb7491a185af110e8dbe0cdc8db2d1b3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:04:22.204 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/MozbAhlORls --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/68/a2/68a200b2c83987e8d4b6f81eba262448cb7491a185af110e8dbe0cdc8db2d1b3.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: [youtube] MozbAhlORls: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] MozbAhlORls: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 12:04:22.204 [debug] Running yt-dlp command for action: download 12:04:22.205 [debug] QUERY OK source="settings" db=0.2ms idle=1736.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:04:22.205 [debug] QUERY OK source="settings" db=0.1ms idle=1736.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:04:22.205 [debug] QUERY OK source="settings" db=0.2ms idle=1736.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:04:22.206 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/MozbAhlORls --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/d4/06/d406f508d55703754f840ffb6800d9f4d7ee0f52efb509b5291f2d19695506e7.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:04:22.671 [info] {"source":"oban","duration":1062,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:04:25.844 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/shorts/MozbAhlORls --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/d4/06/d406f508d55703754f840ffb6800d9f4d7ee0f52efb509b5291f2d19695506e7.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 WARNING: [youtube] MozbAhlORls: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] MozbAhlORls: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 12:04:25.844 [error] yt-dlp download error for media item #24001: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] MozbAhlORls: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] MozbAhlORls: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 12:04:25.845 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":24001},"id":7381,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6691831,"event":"job:exception","queue_time":713489,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:04:39.194 [info] {"args":{"id":24342},"id":7387,"meta":{},"system_time":1766577879194617146,"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"]} 12:04:39.195 [debug] QUERY OK source="media_items" db=0.2ms idle=1726.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" = ?) [24342] 12:04:39.195 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:04:39.195 [debug] QUERY OK source="sources" db=0.1ms idle=1727.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 12:04:39.196 [debug] QUERY OK source="media_profiles" db=0.1ms 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] 12:04:39.196 [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 [24342] 12:04:39.197 [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" = ?) [24342] 12:04:39.197 [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] 12:04:39.197 [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:04:39.198 [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 [] 12:04:39.198 [debug] Running yt-dlp command for action: get_downloadable_status 12:04:39.198 [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:04:39.199 [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 [] 12:04:39.199 [debug] QUERY OK source="settings" db=0.2ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:04:39.199 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6-Qcvt_UjFo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ef/b7/efb777b9faf7470bf9ff7860eb698dad09c608df11c760e91a3736908d85454c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:04:42.358 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6-Qcvt_UjFo --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ef/b7/efb777b9faf7470bf9ff7860eb698dad09c608df11c760e91a3736908d85454c.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: [youtube] 6-Qcvt_UjFo: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 6-Qcvt_UjFo: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 12:04:42.358 [debug] Running yt-dlp command for action: download 12:04:42.358 [debug] QUERY OK source="settings" db=0.1ms idle=1890.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:04:42.359 [debug] QUERY OK source="settings" db=0.1ms idle=1890.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:04:42.359 [debug] QUERY OK source="settings" db=0.2ms idle=1890.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:04:42.359 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6-Qcvt_UjFo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/2b/f2/2bf2e218b8d623d25ef94b72016d28bfd22023b8f07bac523a11467d9f16be8a.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:04:45.812 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=6-Qcvt_UjFo --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/2b/f2/2bf2e218b8d623d25ef94b72016d28bfd22023b8f07bac523a11467d9f16be8a.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 WARNING: [youtube] 6-Qcvt_UjFo: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 6-Qcvt_UjFo: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 12:04:45.813 [error] yt-dlp download error for media item #24342: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] 6-Qcvt_UjFo: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] 6-Qcvt_UjFo: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 12:04:45.814 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":24342},"id":7387,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6618724,"event":"job:exception","queue_time":464624,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:04:52.673 [info] {"source":"oban","duration":1399,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:05:00.193 [info] {"source":"oban","duration":604,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:05:22.675 [info] {"source":"oban","duration":1267,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:05:52.677 [info] {"source":"oban","duration":1475,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:06:00.195 [info] {"source":"oban","duration":1139,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:06:22.679 [info] {"source":"oban","duration":1423,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:06:52.682 [info] {"source":"oban","duration":1759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:07:00.196 [info] {"source":"oban","duration":436,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:07:22.684 [info] {"source":"oban","duration":895,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:07:52.686 [info] {"source":"oban","duration":1311,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:08:00.197 [info] {"source":"oban","duration":324,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:08:22.688 [info] {"source":"oban","duration":1248,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:08:52.691 [info] {"source":"oban","duration":1812,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:09:00.199 [info] {"source":"oban","duration":485,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:09:22.693 [info] {"source":"oban","duration":958,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:09:52.695 [info] {"source":"oban","duration":1169,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:10:00.200 [info] {"source":"oban","duration":466,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:10:22.698 [info] {"source":"oban","duration":1311,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:10:52.700 [info] {"source":"oban","duration":1280,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:11:00.201 [info] {"source":"oban","duration":222,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:11:22.702 [info] {"source":"oban","duration":1413,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:11:52.704 [info] {"source":"oban","duration":1100,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:12:00.202 [info] {"source":"oban","duration":405,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:12:22.706 [info] {"source":"oban","duration":1302,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:12:52.708 [info] {"source":"oban","duration":963,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:13:00.204 [info] {"source":"oban","duration":768,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:13:22.710 [info] {"source":"oban","duration":905,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:13:52.712 [info] {"source":"oban","duration":1477,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:14:00.205 [info] {"source":"oban","duration":354,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:14:22.714 [info] {"source":"oban","duration":1135,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:14:52.716 [info] {"source":"oban","duration":983,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:15:00.206 [info] {"source":"oban","duration":332,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:15:22.718 [info] {"source":"oban","duration":1577,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:15:52.720 [info] {"source":"oban","duration":1314,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:16:00.208 [info] {"source":"oban","duration":796,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:16:22.722 [info] {"source":"oban","duration":779,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:16:52.724 [info] {"source":"oban","duration":1345,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:17:00.210 [info] {"source":"oban","duration":241,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:17:22.727 [info] {"source":"oban","duration":1619,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:17:52.729 [info] {"source":"oban","duration":1902,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:18:00.212 [info] {"source":"oban","duration":907,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:18:22.731 [info] {"source":"oban","duration":833,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:18:52.733 [info] {"source":"oban","duration":876,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:19:00.214 [info] {"source":"oban","duration":1048,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:19:22.735 [info] {"source":"oban","duration":1596,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:19:52.737 [info] {"source":"oban","duration":1419,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:20:00.215 [info] {"source":"oban","duration":581,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:20:10.104 [info] {"args":{"id":24418},"id":7388,"meta":{},"system_time":1766578810104372744,"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"]} 12:20:10.104 [debug] QUERY OK source="media_items" db=0.2ms idle=1633.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" = ?) [24418] 12:20:10.105 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:20:10.105 [debug] QUERY OK source="sources" db=0.2ms idle=1009.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 12:20:10.105 [debug] QUERY OK source="media_profiles" db=0.1ms idle=635.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:20:10.106 [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 [24418] 12:20:10.107 [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" = ?) [24418] 12:20:10.107 [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] 12:20:10.108 [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 [] 12:20:10.108 [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 [] 12:20:10.108 [debug] Running yt-dlp command for action: get_downloadable_status 12:20:10.127 [debug] QUERY OK source="settings" db=0.1ms 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 [] 12:20:10.127 [debug] QUERY OK source="settings" db=0.1ms idle=20.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:20:10.127 [debug] QUERY OK source="settings" db=0.1ms idle=20.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:20:10.127 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=hTM1yibhP9s --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ba/57/ba577d1119b3967d27e0a10be6074647ab098f34955e4a656d03456093948948.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:20:13.179 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=hTM1yibhP9s --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/ba/57/ba577d1119b3967d27e0a10be6074647ab098f34955e4a656d03456093948948.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: [youtube] hTM1yibhP9s: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] hTM1yibhP9s: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 12:20:13.179 [debug] Running yt-dlp command for action: download 12:20:13.180 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1709.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:20:13.180 [debug] QUERY OK source="settings" db=0.1ms idle=1709.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:20:13.180 [debug] QUERY OK source="settings" db=0.1ms idle=1710.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:20:13.181 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=hTM1yibhP9s --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/2c/cb/2ccb5c817ea328cf54be97b34de40cc93efdad752c62c03e606b8efbafbd51a3.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:20:16.851 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=hTM1yibhP9s --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/2c/cb/2ccb5c817ea328cf54be97b34de40cc93efdad752c62c03e606b8efbafbd51a3.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 WARNING: [youtube] hTM1yibhP9s: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] hTM1yibhP9s: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 12:20:16.852 [error] yt-dlp download error for media item #24418: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] hTM1yibhP9s: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] hTM1yibhP9s: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 12:20:16.853 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":24418},"id":7388,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6748013,"event":"job:exception","queue_time":980827,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:20:22.739 [info] {"source":"oban","duration":861,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:20:52.741 [info] {"source":"oban","duration":1266,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:21:00.217 [info] {"source":"oban","duration":448,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:21:22.744 [info] {"source":"oban","duration":1720,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:21:52.745 [info] {"source":"oban","duration":1120,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:22:00.218 [info] {"source":"oban","duration":390,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:22:22.747 [info] {"source":"oban","duration":1256,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:22:52.750 [info] {"source":"oban","duration":1812,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:23:00.219 [info] {"source":"oban","duration":320,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:23:22.752 [info] {"source":"oban","duration":1172,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:23:52.754 [info] {"source":"oban","duration":1194,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:24:00.221 [info] {"source":"oban","duration":862,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:24:22.756 [info] {"source":"oban","duration":902,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:24:52.758 [info] {"source":"oban","duration":842,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:25:00.222 [info] {"source":"oban","duration":451,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:25:22.760 [info] {"source":"oban","duration":1088,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:25:52.763 [info] {"source":"oban","duration":2036,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:26:00.223 [info] {"source":"oban","duration":339,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:26:22.766 [info] {"source":"oban","duration":2137,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:26:52.768 [info] {"source":"oban","duration":1579,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:27:00.225 [info] {"source":"oban","duration":497,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:27:22.770 [info] {"source":"oban","duration":1545,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:27:52.772 [info] {"source":"oban","duration":1383,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:28:00.226 [info] {"source":"oban","duration":287,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:28:22.775 [info] {"source":"oban","duration":1769,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:28:52.777 [info] {"source":"oban","duration":1532,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:29:00.227 [info] {"source":"oban","duration":215,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:29:22.779 [info] {"source":"oban","duration":1534,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:29:52.782 [info] {"source":"oban","duration":1520,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:30:00.229 [info] {"source":"oban","duration":625,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:30:14.348 [info] {"args":{"id":23915},"id":7363,"meta":{},"system_time":1766579414348665524,"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"]} 12:30:14.349 [debug] QUERY OK source="media_items" db=0.2ms idle=1600.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" = ?) [23915] 12:30:14.349 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:30:14.349 [debug] QUERY OK source="sources" db=0.2ms queue=0.1ms idle=1010.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 12:30:14.350 [debug] QUERY OK source="media_profiles" db=0.1ms idle=601.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:30:14.350 [debug] QUERY OK source="media_items" db=0.3ms 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 [23915] 12:30:14.351 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [23915] 12:30:14.351 [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] 12:30:14.351 [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:30:14.351 [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 [] 12:30:14.352 [debug] Running yt-dlp command for action: get_downloadable_status 12:30:14.352 [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:30:14.353 [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 [] 12:30:14.353 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:30:14.353 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=2E3Qk10EoFA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/5b/a8/5ba8daf1b7656147820da98c58eeda326f74129b434098227af555d6f71874cc.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:30:17.658 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=2E3Qk10EoFA --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/5b/a8/5ba8daf1b7656147820da98c58eeda326f74129b434098227af555d6f71874cc.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: [youtube] 2E3Qk10EoFA: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 2E3Qk10EoFA: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 12:30:17.658 [debug] Running yt-dlp command for action: download 12:30:17.659 [debug] QUERY OK source="settings" db=0.2ms idle=1909.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:30:17.659 [debug] QUERY OK source="settings" db=0.2ms idle=1910.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:30:17.659 [debug] QUERY OK source="settings" db=0.1ms idle=1910.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:30:17.660 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=2E3Qk10EoFA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/28/2d/282d3b6f3f23e0b15e838b71f918d0f357e80dd2b91d887629dea6b147682b81.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:30:21.400 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=2E3Qk10EoFA --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/28/2d/282d3b6f3f23e0b15e838b71f918d0f357e80dd2b91d887629dea6b147682b81.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 WARNING: [youtube] 2E3Qk10EoFA: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] 2E3Qk10EoFA: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 12:30:21.401 [error] yt-dlp download error for media item #23915: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] 2E3Qk10EoFA: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] 2E3Qk10EoFA: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 12:30:21.401 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23915},"id":7363,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":7052617,"event":"job:exception","queue_time":77184,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:30:22.784 [info] {"source":"oban","duration":998,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:30:44.413 [info] {"args":{"id":23973},"id":7384,"meta":{},"system_time":1766579444413716966,"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"]} 12:30:44.414 [debug] QUERY OK source="media_items" db=0.1ms idle=1665.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" = ?) [23973] 12:30:44.414 [info] User scripts lifecyle file either not present or is empty. Skipping. 12:30:44.414 [debug] QUERY OK source="sources" db=0.1ms idle=1666.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 12:30:44.415 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1011.5ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 12:30:44.415 [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 [23973] 12:30:44.416 [debug] QUERY OK source="media_metadata" db=0.0ms 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" = ?) [23973] 12:30:44.416 [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:30:44.417 [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 [] 12:30:44.417 [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:30:44.417 [debug] Running yt-dlp command for action: get_downloadable_status 12:30:44.418 [debug] QUERY OK source="settings" db=0.1ms idle=2.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:30:44.418 [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 [] 12:30:44.418 [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:30:44.418 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bwW1Kwbq6k8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/47/df/47dfc0e85e6f8b749fa1d184616c01e3c461a42878f122fc76a519b50107595c.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:30:48.190 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bwW1Kwbq6k8 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/47/df/47dfc0e85e6f8b749fa1d184616c01e3c461a42878f122fc76a519b50107595c.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: [youtube] bwW1Kwbq6k8: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] bwW1Kwbq6k8: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 12:30:48.190 [debug] Running yt-dlp command for action: download 12:30:48.191 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=778.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:30:48.191 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=443.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:30:48.192 [debug] QUERY OK source="settings" db=0.1ms idle=443.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 12:30:48.192 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bwW1Kwbq6k8 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/75/74/7574498766e01026672288eb2dcdda0befc0decf3858ee9f9eb501e2b9cdaf4b.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 12:30:52.033 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=bwW1Kwbq6k8 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --write-thumbnail --convert-thumbnail jpg --output thumbnail:/downloads/CHEST'ER(해외 가구DIY 채널)/%(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:4320,+codec:avc:m4a --format bestvideo*+bestaudio/best --output /downloads/CHEST'ER(해외 가구DIY 채널)/%(upload_date>%Y-%m-%d)S %(title)S/%(title)S [%(id)S].%(ext)S --print-to-file after_move:%()j /tmp/pinchflat/data/75/74/7574498766e01026672288eb2dcdda0befc0decf3858ee9f9eb501e2b9cdaf4b.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 WARNING: [youtube] bwW1Kwbq6k8: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] bwW1Kwbq6k8: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 12:30:52.034 [error] yt-dlp download error for media item #23973: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] bwW1Kwbq6k8: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] bwW1Kwbq6k8: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 12:30:52.035 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23973},"id":7384,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":7620510,"event":"job:exception","queue_time":532630,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 12:30:52.786 [info] {"source":"oban","duration":1386,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:31:00.231 [info] {"source":"oban","duration":588,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:31:22.788 [info] {"source":"oban","duration":1569,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:31:52.790 [info] {"source":"oban","duration":867,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:32:00.232 [info] {"source":"oban","duration":287,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:32:22.793 [info] {"source":"oban","duration":1415,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:32:52.795 [info] {"source":"oban","duration":1556,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:33:00.234 [info] {"source":"oban","duration":605,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:33:22.797 [info] {"source":"oban","duration":1081,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:33:52.798 [info] {"source":"oban","duration":581,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:34:00.235 [info] {"source":"oban","duration":290,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:34:22.801 [info] {"source":"oban","duration":1789,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:34:52.803 [info] {"source":"oban","duration":1157,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:35:00.237 [info] {"source":"oban","duration":726,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:35:22.805 [info] {"source":"oban","duration":1635,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:35:52.808 [info] {"source":"oban","duration":1915,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:36:00.238 [info] {"source":"oban","duration":377,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:36:22.810 [info] {"source":"oban","duration":1334,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:36:52.812 [info] {"source":"oban","duration":1603,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:37:00.239 [info] {"source":"oban","duration":577,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:37:22.813 [info] {"source":"oban","duration":729,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:37:52.815 [info] {"source":"oban","duration":1246,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:38:00.241 [info] {"source":"oban","duration":579,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:38:22.817 [info] {"source":"oban","duration":1444,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:38:52.819 [info] {"source":"oban","duration":1276,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:39:00.243 [info] {"source":"oban","duration":455,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:39:22.821 [info] {"source":"oban","duration":1375,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:39:52.823 [info] {"source":"oban","duration":1716,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:40:00.245 [info] {"source":"oban","duration":862,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:40:22.826 [info] {"source":"oban","duration":1660,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:40:52.826 [info] {"source":"oban","duration":658,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:41:00.247 [info] {"source":"oban","duration":745,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:41:22.828 [info] {"source":"oban","duration":874,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:41:52.830 [info] {"source":"oban","duration":831,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:42:00.248 [info] {"source":"oban","duration":310,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:42:22.832 [info] {"source":"oban","duration":1405,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:42:52.835 [info] {"source":"oban","duration":1669,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:43:00.249 [info] {"source":"oban","duration":283,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:43:22.836 [info] {"source":"oban","duration":1193,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:43:52.838 [info] {"source":"oban","duration":844,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:44:00.251 [info] {"source":"oban","duration":540,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:44:22.840 [info] {"source":"oban","duration":1458,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:44:52.842 [info] {"source":"oban","duration":1308,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:45:00.252 [info] {"source":"oban","duration":302,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:45:22.844 [info] {"source":"oban","duration":911,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:45:52.846 [info] {"source":"oban","duration":1473,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:46:00.253 [info] {"source":"oban","duration":338,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:46:22.848 [info] {"source":"oban","duration":1015,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:46:52.850 [info] {"source":"oban","duration":865,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:47:00.254 [info] {"source":"oban","duration":327,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:47:22.852 [info] {"source":"oban","duration":1196,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:47:52.854 [info] {"source":"oban","duration":1407,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:48:00.255 [info] {"source":"oban","duration":334,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:48:22.856 [info] {"source":"oban","duration":978,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:48:52.859 [info] {"source":"oban","duration":1761,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:49:00.256 [info] {"source":"oban","duration":496,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:49:22.861 [info] {"source":"oban","duration":1271,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:49:52.863 [info] {"source":"oban","duration":1293,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:50:00.258 [info] {"source":"oban","duration":856,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:50:22.865 [info] {"source":"oban","duration":1093,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:50:52.867 [info] {"source":"oban","duration":877,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:51:00.259 [info] {"source":"oban","duration":253,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:51:22.869 [info] {"source":"oban","duration":1035,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:51:52.871 [info] {"source":"oban","duration":1073,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:52:00.260 [info] {"source":"oban","duration":384,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:52:22.873 [info] {"source":"oban","duration":846,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:52:52.875 [info] {"source":"oban","duration":1353,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:53:00.261 [info] {"source":"oban","duration":248,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:53:22.878 [info] {"source":"oban","duration":1143,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:53:52.880 [info] {"source":"oban","duration":1593,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:54:00.262 [info] {"source":"oban","duration":443,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:54:22.882 [info] {"source":"oban","duration":949,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:54:52.884 [info] {"source":"oban","duration":1074,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:55:00.264 [info] {"source":"oban","duration":646,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:55:22.886 [info] {"source":"oban","duration":1180,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:55:52.888 [info] {"source":"oban","duration":1116,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:56:00.265 [info] {"source":"oban","duration":311,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:56:22.890 [info] {"source":"oban","duration":864,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:56:52.892 [info] {"source":"oban","duration":1418,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:57:00.266 [info] {"source":"oban","duration":415,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:57:22.894 [info] {"source":"oban","duration":820,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:57:52.896 [info] {"source":"oban","duration":1623,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:58:00.267 [info] {"source":"oban","duration":442,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:58:22.898 [info] {"source":"oban","duration":1287,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:58:52.899 [info] {"source":"oban","duration":720,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:59:00.268 [info] {"source":"oban","duration":264,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 12:59:22.901 [info] {"source":"oban","duration":1643,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 12:59:52.903 [info] {"source":"oban","duration":1273,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:00:00.269 [info] {"source":"oban","duration":533,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:00:22.905 [info] {"source":"oban","duration":1071,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:00:52.907 [info] {"source":"oban","duration":1231,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:01:00.271 [info] {"source":"oban","duration":719,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:01:22.909 [info] {"source":"oban","duration":1307,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:01:52.912 [info] {"source":"oban","duration":1702,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:02:00.273 [info] {"source":"oban","duration":671,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:02:22.915 [info] {"source":"oban","duration":1422,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:02:52.917 [info] {"source":"oban","duration":1251,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:03:00.275 [info] {"source":"oban","duration":690,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:03:22.919 [info] {"source":"oban","duration":1230,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:03:52.921 [info] {"source":"oban","duration":1113,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:04:00.276 [info] {"source":"oban","duration":272,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:04:22.923 [info] {"source":"oban","duration":1486,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:04:52.925 [info] {"source":"oban","duration":990,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:05:00.277 [info] {"source":"oban","duration":505,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:05:22.927 [info] {"source":"oban","duration":1494,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:05:52.929 [info] {"source":"oban","duration":1081,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:06:00.279 [info] {"source":"oban","duration":864,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:06:22.930 [info] {"source":"oban","duration":675,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:06:52.932 [info] {"source":"oban","duration":735,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:07:00.281 [info] {"source":"oban","duration":696,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:07:22.934 [info] {"source":"oban","duration":934,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:07:52.936 [info] {"source":"oban","duration":1281,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:08:00.282 [info] {"source":"oban","duration":265,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:08:22.938 [info] {"source":"oban","duration":1504,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:08:52.940 [info] {"source":"oban","duration":1297,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:09:00.283 [info] {"source":"oban","duration":296,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:09:22.942 [info] {"source":"oban","duration":1203,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:09:52.944 [info] {"source":"oban","duration":754,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:10:00.285 [info] {"source":"oban","duration":402,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:10:22.946 [info] {"source":"oban","duration":1532,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:10:52.948 [info] {"source":"oban","duration":1555,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:11:00.286 [info] {"source":"oban","duration":352,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:11:22.950 [info] {"source":"oban","duration":1405,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:11:52.952 [info] {"source":"oban","duration":1297,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:12:00.288 [info] {"source":"oban","duration":941,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:12:22.955 [info] {"source":"oban","duration":1541,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:12:52.957 [info] {"source":"oban","duration":1470,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:13:00.290 [info] {"source":"oban","duration":592,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:13:22.959 [info] {"source":"oban","duration":889,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:13:52.960 [info] {"source":"oban","duration":645,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:14:00.292 [info] {"source":"oban","duration":575,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:14:22.962 [info] {"source":"oban","duration":1266,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:14:52.964 [info] {"source":"oban","duration":1561,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:15:00.294 [info] {"source":"oban","duration":1115,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:15:22.966 [info] {"source":"oban","duration":1212,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:15:52.968 [info] {"source":"oban","duration":1241,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:16:00.296 [info] {"source":"oban","duration":552,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:16:22.970 [info] {"source":"oban","duration":1033,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:16:52.972 [info] {"source":"oban","duration":1624,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:17:00.297 [info] {"source":"oban","duration":470,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:17:22.974 [info] {"source":"oban","duration":1377,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:17:52.976 [info] {"source":"oban","duration":1346,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:18:00.299 [info] {"source":"oban","duration":687,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:18:22.978 [info] {"source":"oban","duration":894,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:18:52.981 [info] {"source":"oban","duration":1651,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:19:00.301 [info] {"source":"oban","duration":495,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:19:22.983 [info] {"source":"oban","duration":1524,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:19:52.986 [info] {"source":"oban","duration":1394,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:20:00.303 [info] {"source":"oban","duration":823,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:20:22.988 [info] {"source":"oban","duration":1312,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:20:52.990 [info] {"source":"oban","duration":1136,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:21:00.305 [info] {"source":"oban","duration":702,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:21:15.535 [info] GET / 13:21:15.535 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 13:21:15.536 [debug] QUERY OK source="settings" db=0.3ms idle=1780.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:15.536 [debug] QUERY OK source="media_profiles" db=0.1ms idle=887.7ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 13:21:15.537 [debug] QUERY OK source="sources" db=0.1ms idle=781.3ms SELECT count(s0."id") FROM "sources" AS s0 [] 13:21:15.544 [debug] QUERY OK source="media_items" db=7.2ms idle=781.6ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:21:15.546 [debug] QUERY OK source="media_items" db=1.4ms idle=789.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:21:15.546 [debug] QUERY OK source="settings" db=0.2ms idle=9.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:15.546 [debug] QUERY OK source="settings" db=0.1ms idle=9.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:15.547 [debug] QUERY OK source="settings" db=0.1ms idle=10.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:21:15.548 [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"] 13:21:15.549 [debug] QUERY OK source="media_items" db=0.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 (m0."media_filepath" IS NULL)) [] 13:21:15.550 [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] 13:21:15.550 [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" IN (?,?,?)) [3, 2, 7] 13:21:15.556 [debug] QUERY OK source="media_items" db=5.2ms 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"))) [] 13:21:15.557 [debug] QUERY OK source="media_items" db=0.6ms idle=8.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 13:21:15.557 [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" = ?) [4] 13:21:15.559 [info] Sent 200 in 23ms 13:21:22.992 [info] {"source":"oban","duration":1165,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:21:52.994 [info] {"source":"oban","duration":1032,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:22:00.307 [info] {"source":"oban","duration":536,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:22:22.996 [info] {"source":"oban","duration":841,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:22:52.997 [info] {"source":"oban","duration":677,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:23:00.309 [info] {"source":"oban","duration":894,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:23:22.999 [info] {"source":"oban","duration":1200,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:23:53.001 [info] {"source":"oban","duration":723,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:24:00.311 [info] {"source":"oban","duration":335,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:24:23.003 [info] {"source":"oban","duration":1052,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:24:53.005 [info] {"source":"oban","duration":1462,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:25:00.312 [info] {"source":"oban","duration":505,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:25:23.007 [info] {"source":"oban","duration":889,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:25:53.009 [info] {"source":"oban","duration":1159,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:26:00.313 [info] {"source":"oban","duration":558,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:26:23.011 [info] {"source":"oban","duration":1130,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:26:53.013 [info] {"source":"oban","duration":1249,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:27:00.314 [info] {"source":"oban","duration":318,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:27:23.015 [info] {"source":"oban","duration":1118,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:27:53.017 [info] {"source":"oban","duration":852,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:28:00.315 [info] {"source":"oban","duration":341,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:28:23.019 [info] {"source":"oban","duration":1173,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:28:53.021 [info] {"source":"oban","duration":1453,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:29:00.317 [info] {"source":"oban","duration":928,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:29:23.023 [info] {"source":"oban","duration":1047,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:29:53.026 [info] {"source":"oban","duration":1694,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:30:00.319 [info] {"source":"oban","duration":478,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:30:23.027 [info] {"source":"oban","duration":714,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:30:53.029 [info] {"source":"oban","duration":1037,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:31:00.321 [info] {"source":"oban","duration":776,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:31:23.031 [info] {"source":"oban","duration":1499,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:31:53.034 [info] {"source":"oban","duration":1662,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:32:00.323 [info] {"source":"oban","duration":706,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:32:23.035 [info] {"source":"oban","duration":1433,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:32:53.037 [info] {"source":"oban","duration":1172,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:33:00.324 [info] {"source":"oban","duration":347,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:33:23.040 [info] {"source":"oban","duration":1820,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:33:53.042 [info] {"source":"oban","duration":1622,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:34:00.325 [info] {"source":"oban","duration":385,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:34:23.045 [info] {"source":"oban","duration":1610,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:34:53.047 [info] {"source":"oban","duration":1237,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:35:00.326 [info] {"source":"oban","duration":488,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:35:23.050 [info] {"source":"oban","duration":1697,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:35:53.052 [info] {"source":"oban","duration":1244,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:36:00.328 [info] {"source":"oban","duration":893,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:36:23.054 [info] {"source":"oban","duration":1297,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:36:53.056 [info] {"source":"oban","duration":1386,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:37:00.330 [info] {"source":"oban","duration":1104,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:37:23.058 [info] {"source":"oban","duration":838,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:37:53.060 [info] {"source":"oban","duration":1205,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:38:00.331 [info] {"source":"oban","duration":540,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:38:23.062 [info] {"source":"oban","duration":924,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:38:53.064 [info] {"source":"oban","duration":977,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:39:00.333 [info] {"source":"oban","duration":874,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:39:23.066 [info] {"source":"oban","duration":1018,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:39:53.067 [info] {"source":"oban","duration":681,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:40:00.335 [info] {"source":"oban","duration":816,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:40:23.069 [info] {"source":"oban","duration":1267,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:40:53.071 [info] {"source":"oban","duration":1318,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:41:00.336 [info] {"source":"oban","duration":307,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:41:23.073 [info] {"source":"oban","duration":1591,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:41:52.597 [info] HEAD / 13:41:52.597 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 13:41:52.598 [debug] QUERY OK source="settings" db=0.1ms idle=1839.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:52.598 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1839.8ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 13:41:52.598 [debug] QUERY OK source="sources" db=0.1ms idle=1840.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 13:41:52.601 [debug] QUERY OK source="media_items" db=2.5ms idle=1395.5ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:41:52.602 [debug] QUERY OK source="media_items" db=0.8ms idle=395.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:41:52.603 [debug] QUERY OK source="settings" db=0.1ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:52.603 [debug] QUERY OK source="settings" db=0.1ms idle=4.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:52.603 [debug] QUERY OK source="settings" db=0.1ms idle=4.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:52.605 [debug] QUERY OK source="tasks" db=0.2ms 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"] 13:41:52.606 [debug] QUERY OK source="media_items" db=0.7ms 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 (m0."media_filepath" IS NULL)) [] 13:41:52.606 [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] 13:41:52.607 [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 (?,?,?)) [3, 2, 7] 13:41:52.610 [debug] QUERY OK source="media_items" db=1.7ms 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"))) [] 13:41:52.610 [debug] QUERY OK source="media_items" db=0.5ms 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] 13:41:52.611 [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" = ?) [4] 13:41:52.612 [info] Sent 200 in 15ms 13:41:52.938 [info] GET / 13:41:52.939 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 13:41:52.939 [debug] QUERY OK source="settings" db=0.2ms idle=332.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:52.939 [debug] QUERY OK source="media_profiles" db=0.1ms idle=332.1ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 13:41:52.940 [debug] QUERY OK source="sources" db=0.1ms idle=329.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 13:41:52.941 [debug] QUERY OK source="media_items" db=1.7ms idle=329.3ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:41:52.942 [debug] QUERY OK source="media_items" db=0.7ms idle=330.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:41:52.943 [debug] QUERY OK source="settings" db=0.1ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:52.943 [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 [] 13:41:52.943 [debug] QUERY OK source="settings" db=0.1ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:52.944 [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"] 13:41:52.945 [debug] QUERY OK source="media_items" db=0.6ms 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)) [] 13:41:52.946 [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] 13:41:52.946 [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 (?,?,?)) [3, 2, 7] 13:41:52.948 [debug] QUERY OK source="media_items" db=1.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"))) [] 13:41:52.949 [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 (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 13:41:52.949 [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" = ?) [4] 13:41:52.950 [info] Sent 200 in 11ms 13:41:53.076 [info] {"source":"oban","duration":2311,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:41:53.778 [info] HEAD / 13:41:53.778 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 13:41:53.779 [debug] QUERY OK source="settings" db=0.2ms idle=830.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:53.779 [debug] QUERY OK source="media_profiles" db=0.1ms idle=829.9ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 13:41:53.779 [debug] QUERY OK source="sources" db=0.0ms idle=829.8ms SELECT count(s0."id") FROM "sources" AS s0 [] 13:41:53.790 [debug] QUERY OK source="media_items" db=10.5ms idle=702.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:41:53.792 [debug] QUERY OK source="media_items" db=2.0ms queue=0.1ms idle=582.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:41:53.793 [debug] QUERY OK source="settings" db=0.1ms idle=13.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:53.793 [debug] QUERY OK source="settings" db=0.1ms idle=13.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:53.793 [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 [] 13:41:53.794 [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"] 13:41:53.796 [debug] QUERY OK source="media_items" db=0.7ms idle=2.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:41:53.796 [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] 13:41:53.797 [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 (?,?,?)) [3, 2, 7] 13:41:53.807 [debug] QUERY OK source="media_items" db=9.9ms idle=4.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 13:41:53.808 [debug] QUERY OK source="media_items" db=0.4ms idle=13.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] 13:41:53.809 [debug] QUERY OK source="sources" db=0.1ms idle=13.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 13:41:53.810 [info] Sent 200 in 32ms 13:41:54.075 [info] GET / 13:41:54.075 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 13:41:54.076 [debug] QUERY OK source="settings" db=0.2ms idle=279.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:54.076 [debug] QUERY OK source="media_profiles" db=0.2ms idle=279.2ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 13:41:54.077 [debug] QUERY OK source="sources" db=0.0ms idle=268.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 13:41:54.078 [debug] QUERY OK source="media_items" db=1.6ms idle=268.3ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:41:54.079 [debug] QUERY OK source="media_items" db=0.7ms idle=269.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:41:54.080 [debug] QUERY OK source="settings" db=0.1ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:54.080 [debug] QUERY OK source="settings" db=0.1ms idle=3.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:54.080 [debug] QUERY OK source="settings" db=0.1ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:54.081 [debug] QUERY OK source="tasks" db=0.2ms 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"] 13:41:54.082 [debug] QUERY OK source="media_items" db=0.6ms 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)) [] 13:41:54.083 [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 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 13:41:54.083 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [3, 2, 7] 13:41:54.085 [debug] QUERY OK source="media_items" db=1.3ms 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"))) [] 13:41:54.086 [debug] QUERY OK source="media_items" db=0.3ms 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] 13:41:54.086 [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" = ?) [4] 13:41:54.087 [info] Sent 200 in 12ms 13:41:54.235 [info] HEAD /_next 13:41:54.236 [debug] QUERY OK source="settings" db=0.0ms idle=152.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:54.236 [debug] QUERY OK source="settings" db=0.1ms idle=150.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:54.236 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:41:54.237 [error] #PID<0.216575.0> running PinchflatWeb.Endpoint (connection #PID<0.216574.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /_next ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /_next (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216574.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52300}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216575.0>, params: %{}, path_info: ["_next"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/_next"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/_next", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQqh0EE47WP6fkAGrVC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216574.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52300}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /_next (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216574.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52300}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216575.0>, params: %{}, path_info: ["_next"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/_next"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/_next", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQqh0EE47WP6fkAGrVC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status (truncated) 13:41:54.519 [info] HEAD /__rsc 13:41:54.520 [debug] QUERY OK source="settings" db=0.2ms idle=433.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:54.520 [debug] QUERY OK source="settings" db=0.2ms idle=433.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:54.520 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:41:54.520 [error] #PID<0.216577.0> running PinchflatWeb.Endpoint (connection #PID<0.216576.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /__rsc ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /__rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216576.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52304}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216577.0>, params: %{}, path_info: ["__rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/__rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/__rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQqh1Hq9DlckUwALICB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216576.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52304}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /__rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216576.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52304}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216577.0>, params: %{}, path_info: ["__rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/__rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/__rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQqh1Hq9DlckUwALICB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status (truncated) 13:41:54.877 [info] HEAD /rsc 13:41:54.878 [debug] QUERY OK source="settings" db=0.1ms idle=668.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:54.878 [debug] QUERY OK source="settings" db=0.2ms idle=641.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:54.878 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:41:54.878 [error] #PID<0.216579.0> running PinchflatWeb.Endpoint (connection #PID<0.216578.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /rsc ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216578.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52308}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216579.0>, params: %{}, path_info: ["rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQqh2dE8n3r68QAGrWC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216578.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52308}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216578.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52308}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216579.0>, params: %{}, path_info: ["rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQqh2dE8n3r68QAGrWC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, route (truncated) 13:41:55.316 [info] HEAD /_next 13:41:55.317 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=796.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:55.317 [debug] QUERY OK source="settings" db=0.1ms idle=796.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:55.317 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:41:55.317 [error] #PID<0.216581.0> running PinchflatWeb.Endpoint (connection #PID<0.216580.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /_next ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /_next (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216580.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52316}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216581.0>, params: %{}, path_info: ["_next"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/_next"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/_next", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQqh4Fq7YThPjAALIDB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216580.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52316}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /_next (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216580.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52316}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216581.0>, params: %{}, path_info: ["_next"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/_next"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/_next", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQqh4Fq7YThPjAALIDB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status (truncated) 13:41:55.579 [info] HEAD /__rsc 13:41:55.580 [debug] QUERY OK source="settings" db=0.3ms idle=701.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:55.580 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=701.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:55.580 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:41:55.581 [error] #PID<0.216583.0> running PinchflatWeb.Endpoint (connection #PID<0.216582.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /__rsc ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /__rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216582.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52322}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216583.0>, params: %{}, path_info: ["__rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/__rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/__rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQqh5EbJKCKtxMALIEB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216582.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52322}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /__rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216582.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52322}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216583.0>, params: %{}, path_info: ["__rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/__rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/__rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQqh5EbJKCKtxMALIEB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status (truncated) 13:41:55.849 [info] HEAD /rsc 13:41:55.850 [debug] QUERY OK source="settings" db=0.2ms idle=638.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:55.851 [debug] QUERY OK source="settings" db=0.1ms idle=533.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:41:55.851 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:41:55.851 [error] #PID<0.216585.0> running PinchflatWeb.Endpoint (connection #PID<0.216584.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /rsc ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216584.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52330}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216585.0>, params: %{}, path_info: ["rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQqh6E47KSZA2gALIFB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216584.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52330}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216584.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52330}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216585.0>, params: %{}, path_info: ["rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQqh6E47KSZA2gALIFB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, route (truncated) 13:42:00.337 [info] {"source":"oban","duration":295,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:42:23.078 [info] {"source":"oban","duration":1545,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:42:47.507 [info] GET / 13:42:47.507 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 13:42:47.508 [debug] QUERY OK source="settings" db=0.1ms idle=1749.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:42:47.508 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1191.4ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 13:42:47.508 [debug] QUERY OK source="sources" db=0.1ms idle=750.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 13:42:47.511 [debug] QUERY OK source="media_items" db=2.2ms idle=750.4ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:42:47.513 [debug] QUERY OK source="media_items" db=2.0ms idle=193.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:42:47.513 [debug] QUERY OK source="settings" db=0.1ms idle=5.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:42:47.514 [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 [] 13:42:47.514 [debug] QUERY OK source="settings" db=0.2ms idle=5.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:42:47.515 [debug] QUERY OK source="tasks" db=0.2ms 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"] 13:42:47.516 [debug] QUERY OK source="media_items" db=0.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 (m0."media_filepath" IS NULL)) [] 13:42:47.517 [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] 13:42:47.517 [debug] QUERY OK source="sources" db=0.2ms idle=3.3ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [3, 2, 7] 13:42:47.520 [debug] QUERY OK source="media_items" db=1.4ms 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"))) [] 13:42:47.520 [debug] QUERY OK source="media_items" db=0.5ms 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] 13:42:47.521 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 13:42:47.522 [info] Sent 200 in 14ms 13:42:53.080 [info] {"source":"oban","duration":1098,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:43:00.339 [info] {"source":"oban","duration":766,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:43:03.117 [info] HEAD / 13:43:03.117 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 13:43:03.118 [debug] QUERY OK source="settings" db=0.1ms idle=1359.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:03.118 [debug] QUERY OK source="media_profiles" db=0.1ms idle=769.5ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 13:43:03.119 [debug] QUERY OK source="sources" db=0.1ms idle=360.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 13:43:03.120 [debug] QUERY OK source="media_items" db=1.6ms idle=360.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:43:03.121 [debug] QUERY OK source="media_items" db=0.8ms idle=362.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:43:03.122 [debug] QUERY OK source="settings" db=0.1ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:03.122 [debug] QUERY OK source="settings" db=0.1ms idle=3.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:03.123 [debug] QUERY OK source="settings" db=0.2ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:03.123 [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"] 13:43:03.124 [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 (NOT (m0."media_filepath" IS NULL)) [] 13:43:03.125 [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] 13:43:03.125 [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 (?,?,?)) [3, 2, 7] 13:43:03.127 [debug] QUERY OK source="media_items" db=1.3ms 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"))) [] 13:43:03.128 [debug] QUERY OK source="media_items" db=0.4ms 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] 13:43:03.128 [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" = ?) [4] 13:43:03.129 [info] Sent 200 in 12ms 13:43:03.423 [info] GET / 13:43:03.423 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 13:43:03.423 [debug] QUERY OK source="settings" db=0.1ms idle=297.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:03.424 [debug] QUERY OK source="media_profiles" db=0.1ms idle=296.0ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 13:43:03.424 [debug] QUERY OK source="sources" db=0.2ms idle=295.7ms SELECT count(s0."id") FROM "sources" AS s0 [] 13:43:03.433 [debug] QUERY OK source="media_items" db=8.4ms idle=295.7ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:43:03.434 [debug] QUERY OK source="media_items" db=0.8ms idle=82.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:43:03.434 [debug] QUERY OK source="settings" db=0.1ms idle=10.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:03.434 [debug] QUERY OK source="settings" db=0.1ms idle=10.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:03.435 [debug] QUERY OK source="settings" db=0.2ms idle=10.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:03.436 [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"] 13:43:03.437 [debug] QUERY OK source="media_items" db=0.5ms 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 (m0."media_filepath" IS NULL)) [] 13:43:03.437 [debug] QUERY OK source="media_items" db=0.3ms 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] 13:43:03.438 [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 (?,?,?)) [3, 2, 7] 13:43:03.440 [debug] QUERY OK source="media_items" db=1.4ms 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"))) [] 13:43:03.441 [debug] QUERY OK source="media_items" db=0.5ms 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] 13:43:03.441 [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" = ?) [4] 13:43:03.442 [info] Sent 200 in 19ms 13:43:03.995 [info] HEAD / 13:43:03.995 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 13:43:03.996 [debug] QUERY OK source="settings" db=0.2ms idle=557.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:03.996 [debug] QUERY OK source="media_profiles" db=0.2ms idle=557.7ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 13:43:03.996 [debug] QUERY OK source="sources" db=0.1ms idle=555.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 13:43:03.998 [debug] QUERY OK source="media_items" db=1.8ms idle=555.5ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:43:03.999 [debug] QUERY OK source="media_items" db=0.8ms idle=557.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:43:04.000 [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 [] 13:43:04.000 [debug] QUERY OK source="settings" db=0.1ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:04.000 [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 [] 13:43:04.001 [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"] 13:43:04.003 [debug] QUERY OK source="media_items" db=0.9ms 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)) [] 13:43:04.003 [debug] QUERY OK source="media_items" db=0.4ms 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] 13:43:04.004 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [3, 2, 7] 13:43:04.006 [debug] QUERY OK source="media_items" db=1.3ms 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"))) [] 13:43:04.006 [debug] QUERY OK source="media_items" db=0.4ms 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] 13:43:04.007 [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" = ?) [4] 13:43:04.008 [info] Sent 200 in 13ms 13:43:04.297 [info] GET / 13:43:04.297 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 13:43:04.298 [debug] QUERY OK source="settings" db=0.2ms idle=294.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:04.298 [debug] QUERY OK source="media_profiles" db=0.1ms idle=294.0ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 13:43:04.298 [debug] QUERY OK source="sources" db=0.1ms idle=292.3ms SELECT count(s0."id") FROM "sources" AS s0 [] 13:43:04.300 [debug] QUERY OK source="media_items" db=1.7ms idle=292.0ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:43:04.301 [debug] QUERY OK source="media_items" db=0.8ms idle=293.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 13:43:04.302 [debug] QUERY OK source="settings" db=0.1ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:04.302 [debug] QUERY OK source="settings" db=0.1ms idle=3.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:04.302 [debug] QUERY OK source="settings" db=0.1ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:04.303 [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"] 13:43:04.304 [debug] QUERY OK source="media_items" db=0.5ms 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)) [] 13:43:04.305 [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] 13:43:04.305 [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 (?,?,?)) [3, 2, 7] 13:43:04.307 [debug] QUERY OK source="media_items" db=1.2ms 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"))) [] 13:43:04.308 [debug] QUERY OK source="media_items" db=0.3ms 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] 13:43:04.308 [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" = ?) [4] 13:43:04.310 [info] Sent 200 in 13ms 13:43:04.772 [info] HEAD /_next 13:43:04.773 [debug] QUERY OK source="settings" db=0.2ms idle=467.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:04.773 [debug] QUERY OK source="settings" db=0.1ms idle=465.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:04.773 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:43:04.774 [error] #PID<0.216602.0> running PinchflatWeb.Endpoint (connection #PID<0.216601.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /_next ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /_next (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216601.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52594}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216602.0>, params: %{}, path_info: ["_next"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/_next"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/_next", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQql61Vn1l0Jy0ALImB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216601.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52594}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /_next (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216601.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52594}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216602.0>, params: %{}, path_info: ["_next"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/_next"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/_next", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQql61Vn1l0Jy0ALImB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status (truncated) 13:43:05.145 [info] HEAD /__rsc 13:43:05.146 [debug] QUERY OK source="settings" db=0.1ms idle=837.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:05.147 [debug] QUERY OK source="settings" db=0.3ms idle=837.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:05.147 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:43:05.147 [error] #PID<0.216604.0> running PinchflatWeb.Endpoint (connection #PID<0.216603.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /__rsc ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /__rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216603.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52598}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216604.0>, params: %{}, path_info: ["__rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/__rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/__rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQql8OVbI1UykwALInB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216603.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52598}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /__rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216603.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52598}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216604.0>, params: %{}, path_info: ["__rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/__rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/__rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQql8OVbI1UykwALInB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status (truncated) 13:43:05.189 [info] HEAD /_next 13:43:05.190 [debug] QUERY OK source="settings" db=0.2ms idle=837.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:05.190 [debug] QUERY OK source="settings" db=0.1ms idle=417.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:05.190 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:43:05.190 [error] #PID<0.216606.0> running PinchflatWeb.Endpoint (connection #PID<0.216605.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /_next ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /_next (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216605.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52602}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216606.0>, params: %{}, path_info: ["_next"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/_next"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/_next", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQql8Yz3LK1D2YALIoB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216605.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52602}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /_next (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216605.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52602}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216606.0>, params: %{}, path_info: ["_next"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/_next"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/_next", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQql8Yz3LK1D2YALIoB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status (truncated) 13:43:05.608 [info] HEAD /rsc 13:43:05.609 [debug] QUERY OK source="settings" db=0.2ms idle=462.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:05.609 [debug] QUERY OK source="settings" db=0.1ms idle=462.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:05.609 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:43:05.609 [error] #PID<0.216608.0> running PinchflatWeb.Endpoint (connection #PID<0.216607.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /rsc ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216607.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52606}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216608.0>, params: %{}, path_info: ["rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQql98pwq8uuYIALIpB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216607.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52606}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216607.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52606}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216608.0>, params: %{}, path_info: ["rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQql98pwq8uuYIALIpB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, route (truncated) 13:43:05.633 [info] HEAD /__rsc 13:43:05.633 [debug] QUERY OK source="settings" db=0.2ms idle=443.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:05.633 [debug] QUERY OK source="settings" db=0.1ms idle=443.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:05.634 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:43:05.634 [error] #PID<0.216610.0> running PinchflatWeb.Endpoint (connection #PID<0.216609.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /__rsc ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /__rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216609.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52610}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216610.0>, params: %{}, path_info: ["__rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/__rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/__rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQql-ChOFb7VcsALIqB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216609.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52610}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /__rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216609.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52610}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216610.0>, params: %{}, path_info: ["__rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/__rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/__rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQql-ChOFb7VcsALIqB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status (truncated) 13:43:06.023 [info] HEAD /rsc 13:43:06.024 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=668.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:06.024 [debug] QUERY OK source="settings" db=0.2ms idle=415.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 13:43:06.024 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 13:43:06.025 [error] #PID<0.216612.0> running PinchflatWeb.Endpoint (connection #PID<0.216611.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /rsc ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216611.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52614}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216612.0>, params: %{}, path_info: ["rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQql_fiV_Ry_r0AGrhC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216611.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52614}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216611.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52614}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216612.0>, params: %{}, path_info: ["rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQql_fiV_Ry_r0AGrhC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, route (truncated) 13:43:23.082 [info] {"source":"oban","duration":1280,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:43:53.085 [info] {"source":"oban","duration":1418,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:44:00.340 [info] {"source":"oban","duration":386,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:44:23.087 [info] {"source":"oban","duration":1063,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:44:53.089 [info] {"source":"oban","duration":1066,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:45:00.341 [info] {"source":"oban","duration":356,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:45:23.091 [info] {"source":"oban","duration":1073,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:45:53.093 [info] {"source":"oban","duration":1388,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:46:00.343 [info] {"source":"oban","duration":529,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:46:23.096 [info] {"source":"oban","duration":1152,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:46:53.098 [info] {"source":"oban","duration":996,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:47:00.345 [info] {"source":"oban","duration":502,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:47:23.100 [info] {"source":"oban","duration":786,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:47:53.101 [info] {"source":"oban","duration":697,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:48:00.346 [info] {"source":"oban","duration":311,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:48:23.103 [info] {"source":"oban","duration":1167,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:48:53.105 [info] {"source":"oban","duration":937,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:49:00.347 [info] {"source":"oban","duration":379,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:49:23.107 [info] {"source":"oban","duration":1269,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:49:53.109 [info] {"source":"oban","duration":850,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:50:00.348 [info] {"source":"oban","duration":431,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:50:23.111 [info] {"source":"oban","duration":1251,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:50:53.113 [info] {"source":"oban","duration":1558,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:51:00.349 [info] {"source":"oban","duration":397,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:51:23.116 [info] {"source":"oban","duration":1332,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:51:53.119 [info] {"source":"oban","duration":1875,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:52:00.350 [info] {"source":"oban","duration":336,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:52:23.120 [info] {"source":"oban","duration":680,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:52:53.122 [info] {"source":"oban","duration":866,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:53:00.352 [info] {"source":"oban","duration":1000,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:53:23.124 [info] {"source":"oban","duration":1439,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:53:53.126 [info] {"source":"oban","duration":1068,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:54:00.354 [info] {"source":"oban","duration":393,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:54:23.128 [info] {"source":"oban","duration":1042,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:54:53.130 [info] {"source":"oban","duration":863,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:55:00.356 [info] {"source":"oban","duration":543,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:55:23.132 [info] {"source":"oban","duration":1191,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:55:53.133 [info] {"source":"oban","duration":734,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:56:00.358 [info] {"source":"oban","duration":494,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:56:23.135 [info] {"source":"oban","duration":993,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:56:53.138 [info] {"source":"oban","duration":1782,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:57:00.360 [info] {"source":"oban","duration":1047,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:57:23.140 [info] {"source":"oban","duration":1625,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:57:53.142 [info] {"source":"oban","duration":1348,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:58:00.361 [info] {"source":"oban","duration":381,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:58:23.144 [info] {"source":"oban","duration":1061,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:58:53.146 [info] {"source":"oban","duration":984,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:59:00.363 [info] {"source":"oban","duration":339,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 13:59:23.148 [info] {"source":"oban","duration":937,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 13:59:53.150 [info] {"source":"oban","duration":1219,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:00:00.365 [info] {"source":"oban","duration":615,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:00:23.152 [info] {"source":"oban","duration":1162,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:00:53.154 [info] {"source":"oban","duration":1242,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:01:00.366 [info] {"source":"oban","duration":494,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:01:23.156 [info] {"source":"oban","duration":1527,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:01:53.158 [info] {"source":"oban","duration":1256,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:02:00.368 [info] {"source":"oban","duration":271,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:02:23.160 [info] {"source":"oban","duration":1246,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:02:53.162 [info] {"source":"oban","duration":931,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:03:00.370 [info] {"source":"oban","duration":796,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:03:23.164 [info] {"source":"oban","duration":986,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:03:53.167 [info] {"source":"oban","duration":1832,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:04:00.371 [info] {"source":"oban","duration":551,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:04:23.169 [info] {"source":"oban","duration":1256,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:04:53.171 [info] {"source":"oban","duration":931,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:05:00.372 [info] {"source":"oban","duration":683,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:05:23.173 [info] {"source":"oban","duration":1306,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:05:53.175 [info] {"source":"oban","duration":961,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:06:00.374 [info] {"source":"oban","duration":225,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:06:23.178 [info] {"source":"oban","duration":1932,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:06:53.180 [info] {"source":"oban","duration":906,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:07:00.376 [info] {"source":"oban","duration":785,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:07:23.182 [info] {"source":"oban","duration":1335,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:07:53.184 [info] {"source":"oban","duration":905,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:08:00.378 [info] {"source":"oban","duration":719,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:08:23.186 [info] {"source":"oban","duration":878,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:08:53.188 [info] {"source":"oban","duration":901,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:09:00.380 [info] {"source":"oban","duration":850,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:09:23.190 [info] {"source":"oban","duration":1173,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:09:53.192 [info] {"source":"oban","duration":1457,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:10:00.382 [info] {"source":"oban","duration":788,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:10:23.194 [info] {"source":"oban","duration":1317,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:10:53.196 [info] {"source":"oban","duration":1412,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:11:00.384 [info] {"source":"oban","duration":458,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:11:23.198 [info] {"source":"oban","duration":1205,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:11:53.200 [info] {"source":"oban","duration":849,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:12:00.386 [info] {"source":"oban","duration":697,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:12:23.202 [info] {"source":"oban","duration":1227,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:12:53.204 [info] {"source":"oban","duration":1503,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:13:00.388 [info] {"source":"oban","duration":939,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:13:23.206 [info] {"source":"oban","duration":1270,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:13:53.208 [info] {"source":"oban","duration":1257,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:14:00.389 [info] {"source":"oban","duration":256,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:14:23.211 [info] {"source":"oban","duration":1965,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:14:53.213 [info] {"source":"oban","duration":840,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:15:00.391 [info] {"source":"oban","duration":1218,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:15:23.215 [info] {"source":"oban","duration":814,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:15:53.217 [info] {"source":"oban","duration":1264,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:16:00.393 [info] {"source":"oban","duration":693,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:16:23.219 [info] {"source":"oban","duration":768,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:16:53.221 [info] {"source":"oban","duration":938,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:17:00.395 [info] {"source":"oban","duration":1129,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:17:23.223 [info] {"source":"oban","duration":964,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:17:53.225 [info] {"source":"oban","duration":1601,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:18:00.396 [info] {"source":"oban","duration":519,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:18:23.227 [info] {"source":"oban","duration":1233,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:18:53.229 [info] {"source":"oban","duration":1021,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:19:00.399 [info] {"source":"oban","duration":915,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:19:23.231 [info] {"source":"oban","duration":896,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:19:53.233 [info] {"source":"oban","duration":756,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:20:00.401 [info] {"source":"oban","duration":736,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:20:23.235 [info] {"source":"oban","duration":1363,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:20:53.237 [info] {"source":"oban","duration":880,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:21:00.403 [info] {"source":"oban","duration":916,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:21:23.240 [info] {"source":"oban","duration":1636,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:21:53.242 [info] {"source":"oban","duration":2102,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:22:00.405 [info] {"source":"oban","duration":1183,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:22:23.244 [info] {"source":"oban","duration":1417,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:22:53.246 [info] {"source":"oban","duration":1317,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:23:00.406 [info] {"source":"oban","duration":394,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:23:23.248 [info] {"source":"oban","duration":1191,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:23:53.250 [info] {"source":"oban","duration":1180,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:24:00.408 [info] {"source":"oban","duration":884,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:24:23.252 [info] {"source":"oban","duration":1193,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:24:53.254 [info] {"source":"oban","duration":1043,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:25:00.409 [info] {"source":"oban","duration":473,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:25:23.256 [info] {"source":"oban","duration":1148,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:25:53.258 [info] {"source":"oban","duration":903,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:26:00.410 [info] {"source":"oban","duration":418,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:26:23.260 [info] {"source":"oban","duration":1271,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:26:53.262 [info] {"source":"oban","duration":1312,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:27:00.411 [info] {"source":"oban","duration":372,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:27:23.264 [info] {"source":"oban","duration":1205,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:27:53.266 [info] {"source":"oban","duration":1148,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:28:00.413 [info] {"source":"oban","duration":926,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:28:23.268 [info] {"source":"oban","duration":1033,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:28:53.270 [info] {"source":"oban","duration":1514,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:29:00.414 [info] {"source":"oban","duration":520,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:29:23.272 [info] {"source":"oban","duration":1181,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:29:53.274 [info] {"source":"oban","duration":681,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:30:00.416 [info] {"source":"oban","duration":416,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:30:23.276 [info] {"source":"oban","duration":971,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:30:53.279 [info] {"source":"oban","duration":1703,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:31:00.416 [info] {"source":"oban","duration":254,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:31:23.281 [info] {"source":"oban","duration":1068,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:31:53.283 [info] {"source":"oban","duration":1511,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:32:00.418 [info] {"source":"oban","duration":514,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:32:23.285 [info] {"source":"oban","duration":915,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:32:53.287 [info] {"source":"oban","duration":1617,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:33:00.419 [info] {"source":"oban","duration":420,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:33:23.289 [info] {"source":"oban","duration":1038,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:33:53.291 [info] {"source":"oban","duration":1257,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:34:00.421 [info] {"source":"oban","duration":570,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:34:23.293 [info] {"source":"oban","duration":1186,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:34:30.772 [info] {"args":{"id":25851},"id":7197,"meta":{},"system_time":1766586870772306010,"max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","event":"job:start","attempt":20,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:34:30.775 [debug] QUERY OK source="media_items" db=2.8ms idle=12.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [25851] 14:34:30.775 [info] User scripts lifecyle file either not present or is empty. Skipping. 14:34:30.779 [debug] QUERY OK source="sources" db=3.4ms idle=15.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 14:34:30.781 [debug] QUERY OK source="media_profiles" db=2.2ms idle=18.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:34:30.785 [debug] QUERY OK source="media_items" db=3.8ms idle=20.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 [25851] 14:34:30.798 [debug] QUERY OK source="media_metadata" db=0.1ms idle=26.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" = ?) [25851] 14:34:30.798 [debug] QUERY OK source="media_profiles" db=0.1ms idle=23.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 14:34:30.799 [debug] QUERY OK source="settings" db=0.1ms idle=19.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:30.799 [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 [] 14:34:30.799 [debug] Running yt-dlp command for action: get_downloadable_status 14:34:30.809 [debug] QUERY OK source="settings" db=0.1ms idle=23.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:30.810 [debug] QUERY OK source="settings" db=0.1ms idle=11.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:30.810 [debug] QUERY OK source="settings" db=0.1ms idle=11.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:30.810 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=oS2N43NfvJw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/9e/72/9e72384088cb806bd6286b47d2373161e342486a3294a0d2cc5c5ae366c2ded1.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:34:34.275 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=oS2N43NfvJw --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/9e/72/9e72384088cb806bd6286b47d2373161e342486a3294a0d2cc5c5ae366c2ded1.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: [youtube] oS2N43NfvJw: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] oS2N43NfvJw: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 14:34:34.276 [debug] Running yt-dlp command for action: download 14:34:34.276 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=1515.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:34.276 [debug] QUERY OK source="settings" db=0.1ms idle=1516.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:34.276 [debug] QUERY OK source="settings" db=0.1ms idle=1516.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:34:34.277 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=oS2N43NfvJw --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/e2/cc/e2ccac2971c5176010fa0db1eba66f6e00998e0021628e0f3e41f7e9ac88ed89.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 14:34:38.178 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=oS2N43NfvJw --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/e2/cc/e2ccac2971c5176010fa0db1eba66f6e00998e0021628e0f3e41f7e9ac88ed89.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 WARNING: [youtube] oS2N43NfvJw: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] oS2N43NfvJw: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 14:34:38.178 [error] yt-dlp download error for media item #25851: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] oS2N43NfvJw: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] oS2N43NfvJw: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 14:34:38.179 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":25851},"id":7197,"meta":{},"state":"discard","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":7406296,"event":"job:exception","queue_time":193299,"attempt":20,"tags":["media_item","media_fetching","show_in_dashboard"]} 14:34:53.295 [info] {"source":"oban","duration":1408,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:35:00.423 [info] {"source":"oban","duration":864,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:35:23.297 [info] {"source":"oban","duration":1421,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:35:53.299 [info] {"source":"oban","duration":1526,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:36:00.425 [info] {"source":"oban","duration":788,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:36:23.301 [info] {"source":"oban","duration":920,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:36:53.303 [info] {"source":"oban","duration":1043,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:37:00.426 [info] {"source":"oban","duration":385,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:37:23.305 [info] {"source":"oban","duration":897,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:37:53.307 [info] {"source":"oban","duration":974,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:38:00.427 [info] {"source":"oban","duration":474,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:38:23.309 [info] {"source":"oban","duration":876,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:38:53.311 [info] {"source":"oban","duration":951,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:39:00.428 [info] {"source":"oban","duration":360,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:39:23.313 [info] {"source":"oban","duration":1732,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:39:53.316 [info] {"source":"oban","duration":1893,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:40:00.430 [info] {"source":"oban","duration":477,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:40:23.318 [info] {"source":"oban","duration":1214,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:40:37.033 [info] HEAD / 14:40:37.033 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:40:37.033 [debug] QUERY OK source="settings" db=0.1ms 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 [] 14:40:37.034 [debug] QUERY OK source="media_profiles" db=0.2ms idle=273.3ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:40:37.034 [debug] QUERY OK source="sources" db=0.2ms idle=273.7ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:40:37.041 [debug] QUERY OK source="media_items" db=6.7ms idle=274.0ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:40:37.043 [debug] QUERY OK source="media_items" db=1.3ms idle=281.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:40:37.043 [debug] QUERY OK source="settings" db=0.1ms idle=9.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:37.043 [debug] QUERY OK source="settings" db=0.2ms idle=9.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:37.044 [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 [] 14:40:37.045 [debug] QUERY OK source="tasks" db=0.2ms 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"] 14:40:37.046 [debug] QUERY OK source="media_items" db=0.5ms 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 (m0."media_filepath" IS NULL)) [] 14:40:37.046 [debug] QUERY OK source="media_items" db=0.4ms 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] 14:40:37.047 [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 (?,?,?)) [3, 2, 7] 14:40:37.053 [debug] QUERY OK source="media_items" db=5.1ms 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"))) [] 14:40:37.054 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=8.1ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:40:37.054 [debug] QUERY OK source="sources" db=0.1ms 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] 14:40:37.055 [info] Sent 200 in 22ms 14:40:37.331 [info] GET / 14:40:37.331 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:40:37.332 [debug] QUERY OK source="settings" db=0.3ms idle=285.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:37.332 [debug] QUERY OK source="media_profiles" db=0.1ms idle=284.9ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:40:37.332 [debug] QUERY OK source="sources" db=0.1ms idle=279.3ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:40:37.334 [debug] QUERY OK source="media_items" db=1.7ms idle=278.7ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:40:37.335 [debug] QUERY OK source="media_items" db=0.8ms idle=280.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:40:37.336 [debug] QUERY OK source="settings" db=0.1ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:37.336 [debug] QUERY OK source="settings" db=0.1ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:37.336 [debug] QUERY OK source="settings" db=0.1ms idle=4.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:37.337 [debug] QUERY OK source="tasks" db=0.2ms 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"] 14:40:37.338 [debug] QUERY OK source="media_items" db=0.6ms 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)) [] 14:40:37.339 [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] 14:40:37.339 [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 (?,?,?)) [3, 2, 7] 14:40:37.341 [debug] QUERY OK source="media_items" db=1.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"))) [] 14:40:37.342 [debug] QUERY OK source="media_items" db=0.4ms 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] 14:40:37.342 [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" = ?) [4] 14:40:37.343 [info] Sent 200 in 12ms 14:40:37.481 [info] HEAD / 14:40:37.482 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:40:37.482 [debug] QUERY OK source="settings" db=0.1ms idle=142.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:37.482 [debug] QUERY OK source="media_profiles" db=0.1ms idle=142.5ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:40:37.482 [debug] QUERY OK source="sources" db=0.0ms idle=140.9ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:40:37.484 [debug] QUERY OK source="media_items" db=1.6ms idle=140.5ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:40:37.485 [debug] QUERY OK source="media_items" db=0.7ms idle=141.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:40:37.486 [debug] QUERY OK source="settings" db=0.1ms idle=3.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:37.486 [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 [] 14:40:37.486 [debug] QUERY OK source="settings" db=0.1ms idle=3.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:37.487 [debug] QUERY OK source="tasks" db=0.2ms 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"] 14:40:37.488 [debug] QUERY OK source="media_items" db=0.6ms 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)) [] 14:40:37.489 [debug] QUERY OK source="media_items" db=0.4ms 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] 14:40:37.489 [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 (?,?,?)) [3, 2, 7] 14:40:37.491 [debug] QUERY OK source="media_items" db=1.3ms 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"))) [] 14:40:37.492 [debug] QUERY OK source="media_items" db=0.5ms idle=4.2ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:40:37.493 [debug] QUERY OK source="sources" db=0.2ms 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" = ?) [4] 14:40:37.494 [info] Sent 200 in 12ms 14:40:37.809 [info] GET / 14:40:37.809 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:40:37.810 [debug] QUERY OK source="settings" db=0.3ms idle=320.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:37.810 [debug] QUERY OK source="media_profiles" db=0.2ms idle=319.0ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:40:37.811 [debug] QUERY OK source="sources" db=0.1ms idle=318.5ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:40:37.815 [debug] QUERY OK source="media_items" db=4.4ms idle=318.2ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:40:37.816 [debug] QUERY OK source="media_items" db=0.9ms idle=304.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:40:37.817 [debug] QUERY OK source="settings" db=0.1ms idle=6.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:37.817 [debug] QUERY OK source="settings" db=0.2ms idle=6.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:37.818 [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 [] 14:40:37.819 [debug] QUERY OK source="tasks" db=0.2ms 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"] 14:40:37.820 [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 (NOT (m0."media_filepath" IS NULL)) [] 14:40:37.820 [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] 14:40:37.821 [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" IN (?,?,?)) [3, 2, 7] 14:40:37.823 [debug] QUERY OK source="media_items" db=1.6ms 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"))) [] 14:40:37.824 [debug] QUERY OK source="media_items" db=0.5ms 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] 14:40:37.825 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 14:40:37.826 [info] Sent 200 in 16ms 14:40:38.025 [info] HEAD / 14:40:38.025 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:40:38.025 [debug] QUERY OK source="settings" db=0.1ms idle=204.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:38.026 [debug] QUERY OK source="media_profiles" db=0.1ms idle=204.6ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:40:38.026 [debug] QUERY OK source="sources" db=0.1ms idle=202.3ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:40:38.028 [debug] QUERY OK source="media_items" db=2.0ms idle=201.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:40:38.029 [debug] QUERY OK source="media_items" db=0.7ms idle=203.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:40:38.030 [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 [] 14:40:38.030 [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 [] 14:40:38.030 [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 [] 14:40:38.031 [debug] QUERY OK source="tasks" db=0.3ms 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"] 14:40:38.032 [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 (NOT (m0."media_filepath" IS NULL)) [] 14:40:38.033 [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] 14:40:38.033 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [3, 2, 7] 14:40:38.035 [debug] QUERY OK source="media_items" db=1.3ms 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"))) [] 14:40:38.036 [debug] QUERY OK source="media_items" db=0.4ms 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] 14:40:38.036 [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" = ?) [4] 14:40:38.038 [info] Sent 200 in 12ms 14:40:38.401 [info] GET / 14:40:38.401 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:40:38.402 [debug] QUERY OK source="settings" db=0.2ms 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 [] 14:40:38.402 [debug] QUERY OK source="media_profiles" db=0.1ms idle=368.4ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:40:38.402 [debug] QUERY OK source="sources" db=0.0ms idle=366.7ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:40:38.404 [debug] QUERY OK source="media_items" db=1.8ms idle=366.3ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:40:38.405 [debug] QUERY OK source="media_items" db=0.8ms idle=367.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:40:38.405 [debug] QUERY OK source="settings" db=0.1ms idle=3.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:38.406 [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 [] 14:40:38.406 [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 [] 14:40:38.407 [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"] 14:40:38.408 [debug] QUERY OK source="media_items" db=0.7ms 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)) [] 14:40:38.409 [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] 14:40:38.409 [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 (?,?,?)) [3, 2, 7] 14:40:38.411 [debug] QUERY OK source="media_items" db=1.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"))) [] 14:40:38.412 [debug] QUERY OK source="media_items" db=0.4ms idle=4.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:40:38.412 [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" = ?) [4] 14:40:38.413 [info] Sent 200 in 12ms 14:40:38.669 [info] HEAD /_next 14:40:38.669 [debug] QUERY OK source="settings" db=0.1ms idle=259.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:38.670 [debug] QUERY OK source="settings" db=0.2ms idle=258.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:38.670 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:40:38.670 [error] #PID<0.216946.0> running PinchflatWeb.Endpoint (connection #PID<0.216945.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /_next ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /_next (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216945.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58666}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216946.0>, params: %{}, path_info: ["_next"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/_next"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/_next", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQtu9mdP2bRVrcALKqB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216945.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58666}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /_next (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216945.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58666}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216946.0>, params: %{}, path_info: ["_next"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/_next"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/_next", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQtu9mdP2bRVrcALKqB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status (truncated) 14:40:39.173 [info] HEAD /_next 14:40:39.173 [debug] QUERY OK source="settings" db=0.3ms idle=761.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:39.174 [debug] QUERY OK source="settings" db=0.2ms idle=761.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:39.174 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:40:39.174 [error] #PID<0.216948.0> running PinchflatWeb.Endpoint (connection #PID<0.216947.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /_next ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /_next (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216947.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58670}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216948.0>, params: %{}, path_info: ["_next"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/_next"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/_next", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQtu_enM4U_gxgALKrB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216947.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58670}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /_next (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216947.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58670}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216948.0>, params: %{}, path_info: ["_next"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/_next"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/_next", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQtu_enM4U_gxgALKrB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status (truncated) 14:40:39.189 [info] HEAD /__rsc 14:40:39.190 [debug] QUERY OK source="settings" db=0.1ms idle=675.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:39.190 [debug] QUERY OK source="settings" db=0.1ms 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 [] 14:40:39.190 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:40:39.190 [error] #PID<0.216950.0> running PinchflatWeb.Endpoint (connection #PID<0.216949.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /__rsc ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /__rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216949.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58674}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216950.0>, params: %{}, path_info: ["__rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/__rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/__rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQtu_ihg7dv23QALKsB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216949.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58674}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /__rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216949.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58674}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216950.0>, params: %{}, path_info: ["__rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/__rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/__rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQtu_ihg7dv23QALKsB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status (truncated) 14:40:39.586 [info] HEAD /rsc 14:40:39.587 [debug] QUERY OK source="settings" db=0.2ms idle=413.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:39.587 [debug] QUERY OK source="settings" db=0.2ms idle=413.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:39.588 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:40:39.588 [error] #PID<0.216952.0> running PinchflatWeb.Endpoint (connection #PID<0.216951.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /rsc ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216951.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58678}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216952.0>, params: %{}, path_info: ["rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQtvBBQ4cnUE7IALKtB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216951.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58678}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216951.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58678}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216952.0>, params: %{}, path_info: ["rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQtvBBQ4cnUE7IALKtB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, route (truncated) 14:40:39.759 [info] HEAD /__rsc 14:40:39.760 [debug] QUERY OK source="settings" db=0.3ms idle=570.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:39.761 [debug] QUERY OK source="settings" db=0.2ms idle=570.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:39.761 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:40:39.761 [error] #PID<0.216954.0> running PinchflatWeb.Endpoint (connection #PID<0.216953.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /__rsc ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /__rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216953.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58682}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216954.0>, params: %{}, path_info: ["__rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/__rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/__rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQtvBqfyapz3oQALKuB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216953.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58682}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /__rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216953.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58682}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216954.0>, params: %{}, path_info: ["__rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/__rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/__rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQtvBqfyapz3oQALKuB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status (truncated) 14:40:39.998 [info] HEAD /_next 14:40:39.999 [debug] QUERY OK source="settings" db=0.2ms 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 [] 14:40:39.999 [debug] QUERY OK source="settings" db=0.1ms idle=412.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:39.999 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:40:40.000 [error] #PID<0.216956.0> running PinchflatWeb.Endpoint (connection #PID<0.216955.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /_next ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /_next (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216955.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58686}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216956.0>, params: %{}, path_info: ["_next"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/_next"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/_next", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQtvCjdaNhnujAALKvB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216955.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58686}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /_next (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216955.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58686}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216956.0>, params: %{}, path_info: ["_next"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/_next"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/_next", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQtvCjdaNhnujAALKvB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status (truncated) 14:40:40.155 [info] HEAD /rsc 14:40:40.156 [debug] QUERY OK source="settings" db=0.3ms idle=568.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:40.157 [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 [] 14:40:40.157 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:40:40.157 [error] #PID<0.216958.0> running PinchflatWeb.Endpoint (connection #PID<0.216957.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /rsc ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216957.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58690}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216958.0>, params: %{}, path_info: ["rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQtvDI7wTaft30ALKwB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216957.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58690}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216957.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58690}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216958.0>, params: %{}, path_info: ["rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQtvDI7wTaft30ALKwB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, route (truncated) 14:40:40.418 [info] HEAD /__rsc 14:40:40.419 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=657.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:40.419 [debug] QUERY OK source="settings" db=0.1ms idle=419.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:40.419 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:40:40.419 [error] #PID<0.216960.0> running PinchflatWeb.Endpoint (connection #PID<0.216959.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /__rsc ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /__rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216959.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58694}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216960.0>, params: %{}, path_info: ["__rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/__rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/__rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQtvEHd1BxRrDUALKxB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216959.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58694}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /__rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216959.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58694}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216960.0>, params: %{}, path_info: ["__rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/__rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/__rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQtvEHd1BxRrDUALKxB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status (truncated) 14:40:40.864 [info] HEAD /rsc 14:40:40.864 [debug] QUERY OK source="settings" db=0.2ms idle=707.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:40.865 [debug] QUERY OK source="settings" db=0.1ms idle=707.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:40:40.865 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:40:40.865 [error] #PID<0.216962.0> running PinchflatWeb.Endpoint (connection #PID<0.216961.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /rsc ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216961.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58698}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216962.0>, params: %{}, path_info: ["rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQtvFxwMeMCS4IALKyB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216961.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58698}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216961.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58698}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216962.0>, params: %{}, path_info: ["rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQtvFxwMeMCS4IALKyB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, route (truncated) 14:40:53.320 [info] {"source":"oban","duration":1260,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:41:00.432 [info] {"source":"oban","duration":487,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:41:19.164 [info] HEAD / 14:41:19.164 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:41:19.165 [debug] QUERY OK source="settings" db=0.2ms idle=1404.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:41:19.165 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1405.0ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:41:19.166 [debug] QUERY OK source="sources" db=0.1ms idle=566.3ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:41:19.170 [debug] QUERY OK source="media_items" db=4.6ms idle=405.8ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:41:19.172 [debug] QUERY OK source="media_items" db=1.1ms idle=410.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:41:19.172 [debug] QUERY OK source="settings" db=0.1ms idle=6.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:41:19.172 [debug] QUERY OK source="settings" db=0.2ms idle=6.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:41:19.173 [debug] QUERY OK source="settings" db=0.1ms idle=7.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:41:19.174 [debug] QUERY OK source="tasks" db=0.3ms 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"] 14:41:19.175 [debug] QUERY OK source="media_items" db=0.5ms 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)) [] 14:41:19.175 [debug] QUERY OK source="media_items" db=0.4ms 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] 14:41:19.176 [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 (?,?,?)) [3, 2, 7] 14:41:19.178 [debug] QUERY OK source="media_items" db=1.3ms 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"))) [] 14:41:19.178 [debug] QUERY OK source="media_items" db=0.5ms 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] 14:41:19.179 [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" = ?) [4] 14:41:19.180 [info] Sent 200 in 15ms 14:41:19.624 [info] GET / 14:41:19.624 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 14:41:19.625 [debug] QUERY OK source="settings" db=0.1ms idle=448.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:41:19.625 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=447.0ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 14:41:19.625 [debug] QUERY OK source="sources" db=0.1ms idle=446.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 14:41:19.632 [debug] QUERY OK source="media_items" db=6.2ms idle=446.5ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:41:19.633 [debug] QUERY OK source="media_items" db=1.3ms idle=30.7ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:41:19.634 [debug] QUERY OK source="settings" db=0.2ms idle=8.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:41:19.634 [debug] QUERY OK source="settings" db=0.1ms idle=8.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:41:19.635 [debug] QUERY OK source="settings" db=0.2ms idle=9.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:41:19.636 [debug] QUERY OK source="tasks" db=0.3ms 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"] 14:41:19.637 [debug] QUERY OK source="media_items" db=0.7ms idle=2.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (NOT (m0."media_filepath" IS NULL)) [] 14:41:19.637 [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] 14:41:19.638 [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 (?,?,?)) [3, 2, 7] 14:41:19.640 [debug] QUERY OK source="media_items" db=1.3ms idle=3.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) [] 14:41:19.640 [debug] QUERY OK source="media_items" db=0.5ms queue=0.1ms idle=4.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))) ORDER BY m0."id" DESC LIMIT ? OFFSET ? [5, 0] 14:41:19.641 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 14:41:19.642 [info] Sent 200 in 17ms 14:41:20.637 [info] HEAD /_next 14:41:20.638 [debug] QUERY OK source="settings" db=0.1ms idle=999.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:41:20.638 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=998.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:41:20.638 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:41:20.639 [error] #PID<0.216973.0> running PinchflatWeb.Endpoint (connection #PID<0.216972.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /_next ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /_next (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216972.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58730}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216973.0>, params: %{}, path_info: ["_next"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/_next"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/_next", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQtxZ8fKU5X6aEALK_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.216972.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58730}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /_next (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216972.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/_next", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58730}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/_next", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216973.0>, params: %{}, path_info: ["_next"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/_next"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/_next", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQtxZ8fKU5X6aEALK_B"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status (truncated) 14:41:20.976 [info] HEAD /__rsc 14:41:20.977 [debug] QUERY OK source="settings" db=0.4ms idle=372.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:41:20.977 [debug] QUERY OK source="settings" db=0.1ms idle=339.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:41:20.977 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:41:20.977 [error] #PID<0.216975.0> running PinchflatWeb.Endpoint (connection #PID<0.216974.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /__rsc ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /__rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216974.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58734}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216975.0>, params: %{}, path_info: ["__rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/__rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/__rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQtxbNPrYCHJK4ALLAB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216974.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58734}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /__rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216974.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/__rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58734}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/__rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216975.0>, params: %{}, path_info: ["__rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/__rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/__rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQtxbNPrYCHJK4ALLAB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status (truncated) 14:41:21.419 [info] HEAD /rsc 14:41:21.419 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=780.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:41:21.420 [debug] QUERY OK source="settings" db=0.1ms idle=659.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 14:41:21.420 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 14:41:21.420 [error] #PID<0.216977.0> running PinchflatWeb.Endpoint (connection #PID<0.216976.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: HEAD /rsc ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216976.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58738}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216977.0>, params: %{}, path_info: ["rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQtxc21tDHfhaEALLBB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216976.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58738}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /rsc (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.216976.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/rsc", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 58738}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "connection" => "close", "host" => "pf.kjin.cloud", "referer" => "http://pf.kjin.cloud/rsc", "user-agent" => "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "65.87.7.112" }, method: "HEAD", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.216977.0>, params: %{}, path_info: ["rsc"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"referer", "http://pf.kjin.cloud/rsc"}, {"user-agent", "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "65.87.7.112"} ], request_path: "/rsc", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQtxc21tDHfhaEALLBB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, route (truncated) 14:41:23.322 [info] {"source":"oban","duration":1183,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:41:53.325 [info] {"source":"oban","duration":1744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:42:00.434 [info] {"source":"oban","duration":677,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:42:23.327 [info] {"source":"oban","duration":960,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:42:53.329 [info] {"source":"oban","duration":1606,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:43:00.436 [info] {"source":"oban","duration":503,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:43:23.331 [info] {"source":"oban","duration":1042,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:43:53.333 [info] {"source":"oban","duration":1321,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:44:00.437 [info] {"source":"oban","duration":319,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:44:23.336 [info] {"source":"oban","duration":1452,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:44:53.338 [info] {"source":"oban","duration":1007,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:45:00.440 [info] {"source":"oban","duration":2105,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:45:23.340 [info] {"source":"oban","duration":1055,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:45:53.343 [info] {"source":"oban","duration":1749,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:46:00.441 [info] {"source":"oban","duration":287,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:46:23.344 [info] {"source":"oban","duration":1602,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:46:53.346 [info] {"source":"oban","duration":1173,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:47:00.442 [info] {"source":"oban","duration":635,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:47:23.348 [info] {"source":"oban","duration":1078,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:47:53.350 [info] {"source":"oban","duration":1437,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:48:00.443 [info] {"source":"oban","duration":392,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:48:23.352 [info] {"source":"oban","duration":1512,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:48:53.354 [info] {"source":"oban","duration":1583,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:49:00.445 [info] {"source":"oban","duration":792,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:49:23.356 [info] {"source":"oban","duration":1173,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:49:53.359 [info] {"source":"oban","duration":1622,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:50:00.447 [info] {"source":"oban","duration":829,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:50:23.360 [info] {"source":"oban","duration":889,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:50:53.362 [info] {"source":"oban","duration":1371,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:51:00.449 [info] {"source":"oban","duration":746,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:51:23.364 [info] {"source":"oban","duration":1598,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:51:53.366 [info] {"source":"oban","duration":1113,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:52:00.451 [info] {"source":"oban","duration":786,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:52:23.368 [info] {"source":"oban","duration":1351,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:52:53.370 [info] {"source":"oban","duration":848,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:53:00.453 [info] {"source":"oban","duration":378,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:53:23.372 [info] {"source":"oban","duration":964,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:53:53.375 [info] {"source":"oban","duration":1585,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:54:00.455 [info] {"source":"oban","duration":327,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:54:23.377 [info] {"source":"oban","duration":1470,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:54:53.379 [info] {"source":"oban","duration":719,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:55:00.457 [info] {"source":"oban","duration":548,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:55:23.381 [info] {"source":"oban","duration":1620,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:55:53.383 [info] {"source":"oban","duration":1333,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:56:00.458 [info] {"source":"oban","duration":447,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:56:23.386 [info] {"source":"oban","duration":1870,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:56:53.388 [info] {"source":"oban","duration":1305,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:57:00.460 [info] {"source":"oban","duration":558,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:57:23.391 [info] {"source":"oban","duration":1821,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:57:53.393 [info] {"source":"oban","duration":1321,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:58:00.461 [info] {"source":"oban","duration":606,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:58:23.395 [info] {"source":"oban","duration":845,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:58:53.397 [info] {"source":"oban","duration":1022,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:59:00.462 [info] {"source":"oban","duration":581,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 14:59:23.399 [info] {"source":"oban","duration":1607,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 14:59:53.401 [info] {"source":"oban","duration":1199,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:00:00.465 [info] {"source":"oban","duration":1140,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:00:23.403 [info] {"source":"oban","duration":1174,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:00:53.405 [info] {"source":"oban","duration":881,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:01:00.466 [info] {"source":"oban","duration":478,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:01:23.407 [info] {"source":"oban","duration":960,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:01:53.409 [info] {"source":"oban","duration":1037,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:02:00.467 [info] {"source":"oban","duration":336,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:02:23.411 [info] {"source":"oban","duration":886,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:02:53.413 [info] {"source":"oban","duration":1037,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:03:00.468 [info] {"source":"oban","duration":427,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:03:23.415 [info] {"source":"oban","duration":1323,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:03:53.417 [info] {"source":"oban","duration":929,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:04:00.469 [info] {"source":"oban","duration":348,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:04:23.419 [info] {"source":"oban","duration":891,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:04:53.421 [info] {"source":"oban","duration":881,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:05:00.470 [info] {"source":"oban","duration":406,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:05:23.423 [info] {"source":"oban","duration":894,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:05:53.425 [info] {"source":"oban","duration":971,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:06:00.471 [info] {"source":"oban","duration":361,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:06:23.427 [info] {"source":"oban","duration":948,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:06:53.429 [info] {"source":"oban","duration":869,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:07:00.472 [info] {"source":"oban","duration":388,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:07:23.431 [info] {"source":"oban","duration":875,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:07:53.433 [info] {"source":"oban","duration":907,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:08:00.473 [info] {"source":"oban","duration":314,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:08:23.435 [info] {"source":"oban","duration":951,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:08:53.437 [info] {"source":"oban","duration":1302,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:09:00.475 [info] {"source":"oban","duration":982,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:09:23.439 [info] {"source":"oban","duration":894,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:09:53.441 [info] {"source":"oban","duration":1487,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:10:00.476 [info] {"source":"oban","duration":513,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:10:23.443 [info] {"source":"oban","duration":1397,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:10:53.445 [info] {"source":"oban","duration":1057,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:11:00.477 [info] {"source":"oban","duration":426,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:11:23.447 [info] {"source":"oban","duration":1028,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:11:53.448 [info] {"source":"oban","duration":603,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:12:00.479 [info] {"source":"oban","duration":681,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:12:23.450 [info] {"source":"oban","duration":1027,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:12:53.452 [info] {"source":"oban","duration":1248,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:13:00.480 [info] {"source":"oban","duration":289,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:13:23.455 [info] {"source":"oban","duration":1620,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:13:53.456 [info] {"source":"oban","duration":1570,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:14:00.482 [info] {"source":"oban","duration":693,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:14:23.458 [info] {"source":"oban","duration":1005,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:14:53.460 [info] {"source":"oban","duration":958,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:15:00.484 [info] {"source":"oban","duration":458,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:15:23.462 [info] {"source":"oban","duration":1121,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:15:53.463 [info] {"source":"oban","duration":665,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:16:00.486 [info] {"source":"oban","duration":546,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:16:09.097 [info] GET / 15:16:09.097 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 15:16:09.098 [debug] QUERY OK source="settings" db=0.1ms idle=1233.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:16:09.098 [debug] QUERY OK source="media_profiles" db=0.3ms idle=334.6ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 15:16:09.098 [debug] QUERY OK source="sources" db=0.0ms idle=335.1ms SELECT count(s0."id") FROM "sources" AS s0 [] 15:16:09.101 [debug] QUERY OK source="media_items" db=2.9ms idle=335.3ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 15:16:09.103 [debug] QUERY OK source="media_items" db=1.2ms idle=234.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 15:16:09.104 [debug] QUERY OK source="settings" db=0.1ms idle=5.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:16:09.104 [debug] QUERY OK source="settings" db=0.1ms idle=5.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:16:09.105 [debug] QUERY OK source="settings" db=0.2ms idle=5.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:16:09.106 [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"] 15:16:09.107 [debug] QUERY OK source="media_items" db=0.6ms 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 (m0."media_filepath" IS NULL)) [] 15:16:09.107 [debug] QUERY OK source="media_items" db=0.3ms 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 INNER JOIN "sources" AS s1 ON s1."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:16:09.108 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" IN (?,?,?)) [3, 2, 7] 15:16:09.112 [debug] QUERY OK source="media_items" db=2.8ms idle=4.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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:16:09.113 [debug] QUERY OK source="media_items" db=0.5ms idle=6.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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:16:09.113 [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" = ?) [4] 15:16:09.114 [info] Sent 200 in 17ms 15:16:23.465 [info] {"source":"oban","duration":957,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:16:53.467 [info] {"source":"oban","duration":1110,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:17:00.488 [info] {"source":"oban","duration":609,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:17:23.469 [info] {"source":"oban","duration":868,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:17:53.471 [info] {"source":"oban","duration":906,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:18:00.489 [info] {"source":"oban","duration":458,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:18:23.474 [info] {"source":"oban","duration":1582,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:18:53.475 [info] {"source":"oban","duration":859,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:19:00.490 [info] {"source":"oban","duration":631,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:19:23.477 [info] {"source":"oban","duration":1021,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:19:53.479 [info] {"source":"oban","duration":1241,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:20:00.492 [info] {"source":"oban","duration":713,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:20:23.481 [info] {"source":"oban","duration":1273,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:20:53.483 [info] {"source":"oban","duration":1258,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:21:00.494 [info] {"source":"oban","duration":844,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:21:23.485 [info] {"source":"oban","duration":1525,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:21:53.487 [info] {"source":"oban","duration":1066,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:22:00.496 [info] {"source":"oban","duration":848,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:22:23.490 [info] {"source":"oban","duration":1918,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:22:53.492 [info] {"source":"oban","duration":1430,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:23:00.498 [info] {"source":"oban","duration":717,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:23:23.494 [info] {"source":"oban","duration":865,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:23:53.496 [info] {"source":"oban","duration":904,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:24:00.500 [info] {"source":"oban","duration":1529,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:24:23.498 [info] {"source":"oban","duration":1090,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:24:53.500 [info] {"source":"oban","duration":972,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:25:00.502 [info] {"source":"oban","duration":509,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:25:23.502 [info] {"source":"oban","duration":1625,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:25:53.504 [info] {"source":"oban","duration":1329,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:26:00.503 [info] {"source":"oban","duration":397,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:26:23.506 [info] {"source":"oban","duration":1524,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:26:53.508 [info] {"source":"oban","duration":1228,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:27:00.504 [info] {"source":"oban","duration":300,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:27:23.510 [info] {"source":"oban","duration":906,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:27:53.512 [info] {"source":"oban","duration":1194,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:28:00.505 [info] {"source":"oban","duration":371,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:28:23.514 [info] {"source":"oban","duration":839,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:28:53.516 [info] {"source":"oban","duration":1319,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:29:00.506 [info] {"source":"oban","duration":496,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:29:23.518 [info] {"source":"oban","duration":1595,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:29:53.520 [info] {"source":"oban","duration":914,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:30:00.508 [info] {"source":"oban","duration":1360,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:30:23.522 [info] {"source":"oban","duration":1163,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:30:53.524 [info] {"source":"oban","duration":875,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:31:00.510 [info] {"source":"oban","duration":858,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:31:23.526 [info] {"source":"oban","duration":979,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:31:53.528 [info] {"source":"oban","duration":844,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:32:00.511 [info] {"source":"oban","duration":351,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:32:23.530 [info] {"source":"oban","duration":1183,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:32:53.532 [info] {"source":"oban","duration":1520,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:33:00.512 [info] {"source":"oban","duration":363,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:33:23.534 [info] {"source":"oban","duration":1409,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:33:53.535 [info] {"source":"oban","duration":715,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:34:00.514 [info] {"source":"oban","duration":292,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:34:23.537 [info] {"source":"oban","duration":853,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:34:53.539 [info] {"source":"oban","duration":1116,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:35:00.516 [info] {"source":"oban","duration":678,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:35:23.541 [info] {"source":"oban","duration":1023,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:35:53.543 [info] {"source":"oban","duration":1542,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:36:00.518 [info] {"source":"oban","duration":475,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:36:23.545 [info] {"source":"oban","duration":669,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:36:53.548 [info] {"source":"oban","duration":1999,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:37:00.520 [info] {"source":"oban","duration":910,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:37:23.550 [info] {"source":"oban","duration":837,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:37:53.552 [info] {"source":"oban","duration":917,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:38:00.522 [info] {"source":"oban","duration":993,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:38:23.554 [info] {"source":"oban","duration":968,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:38:53.556 [info] {"source":"oban","duration":936,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:39:00.523 [info] {"source":"oban","duration":439,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:39:23.558 [info] {"source":"oban","duration":1169,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:39:53.560 [info] {"source":"oban","duration":1525,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:40:00.524 [info] {"source":"oban","duration":430,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:40:23.562 [info] {"source":"oban","duration":1617,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:40:53.564 [info] {"source":"oban","duration":1211,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:41:00.526 [info] {"source":"oban","duration":1264,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:41:23.566 [info] {"source":"oban","duration":1333,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:41:53.569 [info] {"source":"oban","duration":1945,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:42:00.528 [info] {"source":"oban","duration":547,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:42:23.571 [info] {"source":"oban","duration":913,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:42:53.573 [info] {"source":"oban","duration":1271,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:43:00.529 [info] {"source":"oban","duration":426,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:43:23.575 [info] {"source":"oban","duration":812,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:43:53.577 [info] {"source":"oban","duration":947,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:44:00.530 [info] {"source":"oban","duration":338,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:44:23.579 [info] {"source":"oban","duration":957,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:44:53.581 [info] {"source":"oban","duration":1152,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:45:00.531 [info] {"source":"oban","duration":372,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:45:23.583 [info] {"source":"oban","duration":1333,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:45:53.586 [info] {"source":"oban","duration":2060,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:46:00.533 [info] {"source":"oban","duration":835,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:46:23.588 [info] {"source":"oban","duration":1293,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:46:53.590 [info] {"source":"oban","duration":1059,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:47:00.534 [info] {"source":"oban","duration":333,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:47:23.592 [info] {"source":"oban","duration":1329,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:47:53.594 [info] {"source":"oban","duration":1557,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:48:00.535 [info] {"source":"oban","duration":569,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:48:23.596 [info] {"source":"oban","duration":946,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:48:53.598 [info] {"source":"oban","duration":1340,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:49:00.537 [info] {"source":"oban","duration":811,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:49:23.600 [info] {"source":"oban","duration":1038,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:49:53.602 [info] {"source":"oban","duration":1288,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:50:00.538 [info] {"source":"oban","duration":339,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:50:23.603 [info] {"source":"oban","duration":642,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:50:53.605 [info] {"source":"oban","duration":1522,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:51:00.540 [info] {"source":"oban","duration":436,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:51:14.297 [info] {"args":{"id":28910},"id":7397,"meta":{},"system_time":1766591474297560834,"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:51:14.300 [debug] QUERY OK source="media_items" db=2.9ms idle=1425.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" = ?) [28910] 15:51:14.301 [info] User scripts lifecyle file either not present or is empty. Skipping. 15:51:14.304 [debug] QUERY OK source="sources" db=2.8ms idle=1015.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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:51:14.306 [debug] QUERY OK source="media_profiles" db=2.1ms idle=432.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 15:51:14.310 [debug] QUERY OK source="media_items" db=2.9ms idle=18.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 [28910] 15:51:14.311 [debug] QUERY OK source="media_metadata" db=0.0ms idle=13.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" = ?) [28910] 15:51:14.311 [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] 15:51:14.312 [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 [] 15:51:14.312 [debug] QUERY OK source="settings" db=0.1ms idle=5.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:51:14.312 [debug] Running yt-dlp command for action: get_downloadable_status 15:51:14.313 [debug] QUERY OK source="settings" db=0.1ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 15:51:14.313 [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 [] 15:51:14.313 [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 [] 15:51:14.314 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OMj_7N008C4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f6/fb/f6fb57d5726bb5fdf34dead1e8012bac159f86852f3a87daa87de7a8709ae2fe.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 15:51:17.209 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OMj_7N008C4 --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/f6/fb/f6fb57d5726bb5fdf34dead1e8012bac159f86852f3a87daa87de7a8709ae2fe.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: [youtube] OMj_7N008C4: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] OMj_7N008C4: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 15:51:17.209 [debug] Running yt-dlp command for action: download 15:51:17.210 [debug] QUERY OK source="settings" db=0.2ms idle=1337.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:51:17.210 [debug] QUERY OK source="settings" db=0.1ms idle=1338.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:51:17.210 [debug] QUERY OK source="settings" db=0.1ms idle=1338.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:51:17.211 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OMj_7N008C4 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/a7/21a70613670d9a48c1eb3998ba6459bc12cdb613f1568685c37de0baaee496ee.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 15:51:20.800 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=OMj_7N008C4 --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/a7/21a70613670d9a48c1eb3998ba6459bc12cdb613f1568685c37de0baaee496ee.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 WARNING: [youtube] OMj_7N008C4: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] OMj_7N008C4: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 15:51:20.800 [error] yt-dlp download error for media item #28910: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] OMj_7N008C4: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] OMj_7N008C4: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 15:51:20.801 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":28910},"id":7397,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6503114,"event":"job:exception","queue_time":118657,"attempt":17,"tags":["media_item","media_fetching","show_in_dashboard"]} 15:51:23.607 [info] {"source":"oban","duration":1452,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:51:53.609 [info] {"source":"oban","duration":968,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:52:00.541 [info] {"source":"oban","duration":380,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:52:23.612 [info] {"source":"oban","duration":1183,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:52:53.614 [info] {"source":"oban","duration":867,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:53:00.543 [info] {"source":"oban","duration":362,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:53:23.616 [info] {"source":"oban","duration":838,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:53:53.617 [info] {"source":"oban","duration":653,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:54:00.545 [info] {"source":"oban","duration":571,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:54:23.619 [info] {"source":"oban","duration":855,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:54:53.621 [info] {"source":"oban","duration":1371,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:55:00.546 [info] {"source":"oban","duration":322,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:55:23.623 [info] {"source":"oban","duration":1255,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:55:53.625 [info] {"source":"oban","duration":1212,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:56:00.548 [info] {"source":"oban","duration":453,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:56:23.627 [info] {"source":"oban","duration":1349,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:56:53.629 [info] {"source":"oban","duration":1509,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:57:00.550 [info] {"source":"oban","duration":270,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:57:23.631 [info] {"source":"oban","duration":1409,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:57:53.633 [info] {"source":"oban","duration":1485,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:58:00.550 [info] {"source":"oban","duration":403,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:58:23.635 [info] {"source":"oban","duration":1091,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:58:53.637 [info] {"source":"oban","duration":1550,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:59:00.552 [info] {"source":"oban","duration":784,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 15:59:23.639 [info] {"source":"oban","duration":1118,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 15:59:53.641 [info] {"source":"oban","duration":966,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:00:00.553 [info] {"source":"oban","duration":302,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:00:23.642 [info] {"source":"oban","duration":669,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:00:38.405 [info] {"args":{"id":23904},"id":7407,"meta":{},"system_time":1766592038405299314,"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"]} 16:00:38.405 [debug] QUERY OK source="media_items" db=0.1ms idle=1532.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" = ?) [23904] 16:00:38.405 [info] User scripts lifecyle file either not present or is empty. Skipping. 16:00:38.406 [debug] QUERY OK source="sources" db=0.1ms idle=1532.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 16:00:38.406 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=1010.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] 16:00:38.407 [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 [23904] 16:00:38.424 [debug] QUERY OK source="media_metadata" db=0.1ms idle=19.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" = ?) [23904] 16:00:38.425 [debug] QUERY OK source="media_profiles" db=0.1ms idle=19.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] 16:00:38.425 [debug] QUERY OK source="settings" db=0.1ms idle=19.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:00:38.425 [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 [] 16:00:38.425 [debug] Running yt-dlp command for action: get_downloadable_status 16:00:38.454 [debug] QUERY OK source="settings" db=0.1ms idle=46.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:00:38.454 [debug] QUERY OK source="settings" db=0.1ms idle=29.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:00:38.455 [debug] QUERY OK source="settings" db=0.1ms idle=29.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:00:38.455 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/58/c4/58c4b6909f4f9ac63dfce9f5923f42f5b11f11d659d4876bfa669cb7b22d0dc4.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:00:41.452 [debug] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --simulate --skip-download --print-to-file %(.{live_status})j /tmp/pinchflat/data/58/c4/58c4b6909f4f9ac63dfce9f5923f42f5b11f11d659d4876bfa669cb7b22d0dc4.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: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details 16:00:41.452 [debug] Running yt-dlp command for action: download 16:00:41.453 [debug] QUERY OK source="settings" db=0.2ms idle=1579.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:00:41.453 [debug] QUERY OK source="settings" db=0.1ms idle=1579.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:00:41.453 [debug] QUERY OK source="settings" db=0.2ms idle=1580.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:00:41.454 [info] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/b0/94/b094886fcee4b9ebd0ea63d003ad1b526ac0c46f51e3a8801e7f37c046032a6d.json --windows-filenames --quiet --cache-dir /tmp/pinchflat/data/yt-dlp-cache 16:00:44.645 [error] [command_wrapper]: /usr/local/bin/yt-dlp called with: https://www.youtube.com/watch?v=I5lAZPVnmSE --no-simulate --no-progress --no-force-overwrites --parse-metadata %(upload_date>%Y-%m-%d)s:(?P.+) --write-auto-subs --write-subs --convert-subs srt --embed-subs --sub-langs kr,en --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:4320,+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/b0/94/b094886fcee4b9ebd0ea63d003ad1b526ac0c46f51e3a8801e7f37c046032a6d.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 WARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details WARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies ERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests 16:00:44.645 [error] yt-dlp download error for media item #23904: "WARNING: [youtube] No supported JavaScript runtime could be found. Only deno is enabled by default; to use another runtime add --js-runtimes RUNTIME[:PATH] to your command/config. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing. See https://github.com/yt-dlp/yt-dlp/wiki/EJS for details on installing one\nWARNING: [youtube] I5lAZPVnmSE: Some web_safari client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: [youtube] I5lAZPVnmSE: Some web client https formats have been skipped as they are missing a url. YouTube is forcing SABR streaming for this client. See https://github.com/yt-dlp/yt-dlp/issues/12482 for more details\nWARNING: The extractor specified to use impersonation for this download, but no impersonate target is available. If you encounter errors, then see https://github.com/yt-dlp/yt-dlp#impersonation for information on installing the required dependencies\nERROR: Unable to download video subtitles for 'en': HTTP Error 429: Too Many Requests\n" 16:00:44.646 [info] {"error":"** (Oban.PerformError) Pinchflat.Downloading.MediaDownloadWorker failed with {:error, :download_failed}","args":{"id":23904},"id":7407,"meta":{},"state":"failure","max_attempts":20,"queue":"media_fetching","worker":"Pinchflat.Downloading.MediaDownloadWorker","source":"oban","duration":6240539,"event":"job:exception","queue_time":28923,"attempt":16,"tags":["media_item","media_fetching","show_in_dashboard"]} 16:00:53.644 [info] {"source":"oban","duration":842,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:01:00.555 [info] {"source":"oban","duration":424,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:01:23.647 [info] {"source":"oban","duration":1666,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:01:53.649 [info] {"source":"oban","duration":1776,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:02:00.556 [info] {"source":"oban","duration":460,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:02:23.651 [info] {"source":"oban","duration":964,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:02:53.653 [info] {"source":"oban","duration":1291,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:03:00.558 [info] {"source":"oban","duration":302,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:03:23.655 [info] {"source":"oban","duration":890,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:03:53.657 [info] {"source":"oban","duration":1458,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:04:00.560 [info] {"source":"oban","duration":715,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:04:23.659 [info] {"source":"oban","duration":1370,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:04:53.661 [info] {"source":"oban","duration":1173,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:05:00.562 [info] {"source":"oban","duration":883,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:05:23.663 [info] {"source":"oban","duration":881,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:05:53.666 [info] {"source":"oban","duration":1995,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:06:00.564 [info] {"source":"oban","duration":777,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:06:23.668 [info] {"source":"oban","duration":989,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:06:53.670 [info] {"source":"oban","duration":1252,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:07:00.566 [info] {"source":"oban","duration":965,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:07:23.672 [info] {"source":"oban","duration":1342,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:07:53.674 [info] {"source":"oban","duration":968,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:08:00.567 [info] {"source":"oban","duration":269,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:08:23.676 [info] {"source":"oban","duration":1372,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:08:53.678 [info] {"source":"oban","duration":1093,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:09:00.568 [info] {"source":"oban","duration":283,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:09:23.680 [info] {"source":"oban","duration":1029,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:09:53.682 [info] {"source":"oban","duration":857,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:10:00.569 [info] {"source":"oban","duration":364,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:10:23.684 [info] {"source":"oban","duration":1125,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:10:53.686 [info] {"source":"oban","duration":1298,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:11:00.571 [info] {"source":"oban","duration":1202,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:11:23.688 [info] {"source":"oban","duration":1211,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:11:53.690 [info] {"source":"oban","duration":876,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:12:00.573 [info] {"source":"oban","duration":880,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:12:23.692 [info] {"source":"oban","duration":1242,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:12:53.694 [info] {"source":"oban","duration":1583,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:13:00.575 [info] {"source":"oban","duration":1303,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:13:23.696 [info] {"source":"oban","duration":866,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:13:53.699 [info] {"source":"oban","duration":1401,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:14:00.577 [info] {"source":"oban","duration":1099,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:14:23.701 [info] {"source":"oban","duration":1007,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:14:53.703 [info] {"source":"oban","duration":1611,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:15:00.579 [info] {"source":"oban","duration":1243,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:15:23.705 [info] {"source":"oban","duration":1298,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:15:53.707 [info] {"source":"oban","duration":1231,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:16:00.580 [info] {"source":"oban","duration":318,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:16:23.709 [info] {"source":"oban","duration":1336,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:16:53.711 [info] {"source":"oban","duration":1527,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:17:00.582 [info] {"source":"oban","duration":635,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:17:23.713 [info] {"source":"oban","duration":1679,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:17:53.715 [info] {"source":"oban","duration":1522,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:18:00.584 [info] {"source":"oban","duration":317,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:18:23.717 [info] {"source":"oban","duration":923,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:18:53.719 [info] {"source":"oban","duration":846,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:19:00.585 [info] {"source":"oban","duration":319,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:19:23.721 [info] {"source":"oban","duration":1177,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:19:53.723 [info] {"source":"oban","duration":892,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:20:00.587 [info] {"source":"oban","duration":406,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:20:23.725 [info] {"source":"oban","duration":812,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:20:53.727 [info] {"source":"oban","duration":1427,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:21:00.588 [info] {"source":"oban","duration":275,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:21:23.729 [info] {"source":"oban","duration":1500,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:21:53.731 [info] {"source":"oban","duration":1505,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:22:00.590 [info] {"source":"oban","duration":703,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:22:23.734 [info] {"source":"oban","duration":1242,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:22:53.737 [info] {"source":"oban","duration":1778,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:23:00.592 [info] {"source":"oban","duration":794,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:23:23.739 [info] {"source":"oban","duration":1261,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:23:53.741 [info] {"source":"oban","duration":922,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:24:00.594 [info] {"source":"oban","duration":1512,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:24:23.743 [info] {"source":"oban","duration":1042,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:24:53.746 [info] {"source":"oban","duration":1533,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:25:00.596 [info] {"source":"oban","duration":697,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:25:23.748 [info] {"source":"oban","duration":1023,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:25:44.366 [info] GET / 16:25:44.366 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 16:25:44.367 [debug] QUERY OK source="settings" db=0.3ms idle=1483.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:25:44.367 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1483.8ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 16:25:44.367 [debug] QUERY OK source="sources" db=0.1ms idle=1484.2ms SELECT count(s0."id") FROM "sources" AS s0 [] 16:25:44.375 [debug] QUERY OK source="media_items" db=7.5ms idle=1484.4ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 16:25:44.377 [debug] QUERY OK source="media_items" db=1.8ms idle=939.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 16:25:44.378 [debug] QUERY OK source="settings" db=0.2ms 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 [] 16:25:44.378 [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 [] 16:25:44.379 [debug] QUERY OK source="settings" db=0.2ms idle=11.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:25:44.380 [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"] 16:25:44.381 [debug] QUERY OK source="media_items" db=0.7ms 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 (m0."media_filepath" IS NULL)) [] 16:25:44.382 [debug] QUERY OK source="media_items" db=0.6ms 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] 16:25:44.383 [debug] QUERY OK source="sources" db=0.4ms 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 (?,?,?)) [3, 2, 7] 16:25:44.388 [debug] QUERY OK source="media_items" db=4.6ms 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"))) [] 16:25:44.389 [debug] QUERY OK source="media_items" db=0.7ms idle=8.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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] 16:25:44.389 [debug] QUERY OK source="sources" db=0.1ms 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" = ?) [4] 16:25:44.391 [info] Sent 200 in 24ms 16:25:53.750 [info] {"source":"oban","duration":1026,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:26:00.597 [info] {"source":"oban","duration":404,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:26:23.752 [info] {"source":"oban","duration":907,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:26:53.754 [info] {"source":"oban","duration":1043,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:27:00.599 [info] {"source":"oban","duration":797,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:27:23.756 [info] {"source":"oban","duration":872,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:27:53.758 [info] {"source":"oban","duration":1122,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:28:00.600 [info] {"source":"oban","duration":402,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:28:23.760 [info] {"source":"oban","duration":1384,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:28:53.762 [info] {"source":"oban","duration":1387,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:29:00.602 [info] {"source":"oban","duration":254,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:29:23.765 [info] {"source":"oban","duration":1414,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:29:53.768 [info] {"source":"oban","duration":2187,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:30:00.603 [info] {"source":"oban","duration":363,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:30:23.770 [info] {"source":"oban","duration":827,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:30:53.772 [info] {"source":"oban","duration":1450,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:31:00.604 [info] {"source":"oban","duration":304,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:31:23.774 [info] {"source":"oban","duration":1306,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:31:53.776 [info] {"source":"oban","duration":1442,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:32:00.605 [info] {"source":"oban","duration":441,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:32:23.778 [info] {"source":"oban","duration":902,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:32:53.780 [info] {"source":"oban","duration":1443,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:33:00.607 [info] {"source":"oban","duration":797,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:33:23.783 [info] {"source":"oban","duration":1616,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:33:53.784 [info] {"source":"oban","duration":1187,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:34:00.609 [info] {"source":"oban","duration":498,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:34:23.786 [info] {"source":"oban","duration":1308,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:34:53.788 [info] {"source":"oban","duration":1060,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:35:00.611 [info] {"source":"oban","duration":469,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:35:23.790 [info] {"source":"oban","duration":1223,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:35:53.792 [info] {"source":"oban","duration":1010,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:36:00.613 [info] {"source":"oban","duration":599,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:36:23.793 [info] {"source":"oban","duration":657,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:36:53.796 [info] {"source":"oban","duration":1737,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:37:00.615 [info] {"source":"oban","duration":523,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:37:23.798 [info] {"source":"oban","duration":899,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:37:53.801 [info] {"source":"oban","duration":1337,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:38:00.616 [info] {"source":"oban","duration":440,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:38:23.804 [info] {"source":"oban","duration":1827,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:38:53.807 [info] {"source":"oban","duration":1749,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:39:00.617 [info] {"source":"oban","duration":308,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:39:23.809 [info] {"source":"oban","duration":1502,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:39:53.811 [info] {"source":"oban","duration":1547,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:40:00.618 [info] {"source":"oban","duration":387,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:40:23.813 [info] {"source":"oban","duration":886,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:40:53.816 [info] {"source":"oban","duration":1676,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:41:00.619 [info] {"source":"oban","duration":296,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:41:23.817 [info] {"source":"oban","duration":924,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:41:53.819 [info] {"source":"oban","duration":1378,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:42:00.620 [info] {"source":"oban","duration":428,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:42:23.822 [info] {"source":"oban","duration":1864,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:42:53.824 [info] {"source":"oban","duration":1458,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:43:00.621 [info] {"source":"oban","duration":285,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:43:23.826 [info] {"source":"oban","duration":1488,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:43:53.828 [info] {"source":"oban","duration":1270,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:44:00.623 [info] {"source":"oban","duration":1048,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:44:23.831 [info] {"source":"oban","duration":1292,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:44:53.834 [info] {"source":"oban","duration":1483,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:45:00.625 [info] {"source":"oban","duration":904,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:45:23.836 [info] {"source":"oban","duration":950,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:45:53.838 [info] {"source":"oban","duration":883,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:46:00.626 [info] {"source":"oban","duration":480,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:46:23.840 [info] {"source":"oban","duration":901,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:46:53.843 [info] {"source":"oban","duration":1616,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:47:00.629 [info] {"source":"oban","duration":470,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:47:23.846 [info] {"source":"oban","duration":1849,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:47:53.848 [info] {"source":"oban","duration":906,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:48:00.630 [info] {"source":"oban","duration":524,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:48:23.851 [info] {"source":"oban","duration":1673,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:48:53.853 [info] {"source":"oban","duration":881,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:49:00.631 [info] {"source":"oban","duration":552,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:49:23.855 [info] {"source":"oban","duration":1563,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:49:53.857 [info] {"source":"oban","duration":1235,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:50:00.632 [info] {"source":"oban","duration":430,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:50:23.859 [info] {"source":"oban","duration":883,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:50:53.861 [info] {"source":"oban","duration":1062,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:51:00.633 [info] {"source":"oban","duration":261,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:51:23.863 [info] {"source":"oban","duration":1185,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:51:36.811 [info] GET /sources/2/media/27892 16:51:36.811 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "27892", "source_id" => "2"} Pipelines: [:browser] 16:51:36.812 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=1927.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" = ?) [27892] 16:51:36.813 [debug] QUERY OK source="tasks" db=0.2ms idle=1928.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" [27892] 16:51:36.813 [debug] QUERY OK source="sources" db=0.2ms idle=1928.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" = ?) [2] 16:51:36.813 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=1213.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 (?,?)) [7310, 7337] 16:51:36.814 [debug] QUERY OK source="settings" db=0.1ms idle=212.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:51:36.814 [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 [] 16:51:36.814 [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 [] 16:51:36.815 [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] 16:51:36.817 [info] Sent 200 in 5ms 16:51:53.865 [info] {"source":"oban","duration":1454,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:52:00.634 [info] {"source":"oban","duration":489,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:52:23.867 [info] {"source":"oban","duration":921,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:52:53.869 [info] {"source":"oban","duration":1154,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:53:00.635 [info] {"source":"oban","duration":311,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:53:10.666 [info] GET /sources/4/media/28076 16:53:10.666 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "28076", "source_id" => "4"} Pipelines: [:browser] 16:53:10.667 [debug] QUERY OK source="media_items" db=0.2ms idle=1782.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" = ?) [28076] 16:53:10.667 [debug] QUERY OK source="tasks" db=0.2ms idle=879.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" [28076] 16:53:10.668 [debug] QUERY OK source="sources" db=0.3ms idle=783.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] 16:53:10.668 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=784.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" = ?) [7319] 16:53:10.669 [debug] QUERY OK source="settings" db=0.1ms idle=784.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:10.669 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:53:10.670 [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:10.671 [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] 16:53:10.672 [info] Sent 200 in 5ms 16:53:23.871 [info] {"source":"oban","duration":1052,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:53:35.008 [info] GET /sources/7/media/28489 16:53:35.008 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "28489", "source_id" => "7"} Pipelines: [:browser] 16:53:35.008 [debug] QUERY OK source="media_items" db=0.1ms idle=1124.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" = ?) [28489] 16:53:35.009 [debug] QUERY OK source="sources" db=0.2ms idle=1124.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 16:53:35.009 [debug] QUERY OK source="tasks" db=0.4ms queue=0.1ms idle=1124.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" [28489] 16:53:35.010 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=170.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" = ?) [7342] 16:53:35.010 [debug] QUERY OK source="settings" db=0.1ms idle=125.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:53:35.010 [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 [] 16:53:35.011 [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 [] 16:53:35.012 [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] 16:53:35.014 [info] Sent 200 in 5ms 16:53:53.873 [info] {"source":"oban","duration":1136,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:54:00.637 [info] {"source":"oban","duration":569,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:54:16.926 [info] GET /sources/4/media/28910 16:54:16.926 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "28910", "source_id" => "4"} Pipelines: [:browser] 16:54:16.927 [debug] QUERY OK source="media_items" db=0.1ms queue=0.1ms idle=1005.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" = ?) [28910] 16:54:16.927 [debug] QUERY OK source="tasks" db=0.2ms idle=42.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" [28910] 16:54:16.928 [debug] QUERY OK source="sources" db=0.4ms idle=42.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 16:54:16.928 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=43.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" = ?) [7397] 16:54:16.929 [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 [] 16:54:16.929 [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 [] 16:54:16.930 [debug] QUERY OK source="settings" db=0.2ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:54:16.931 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 16:54:16.932 [info] Sent 200 in 6ms 16:54:23.875 [info] {"source":"oban","duration":1347,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:54:40.628 [info] GET /sources/7/media/27933 16:54:40.629 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "27933", "source_id" => "7"} Pipelines: [:browser] 16:54:40.630 [debug] QUERY OK source="media_items" db=1.4ms queue=0.1ms idle=1744.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" = ?) [27933] 16:54:40.631 [debug] QUERY OK source="tasks" db=0.3ms idle=1746.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" [27933] 16:54:40.631 [debug] QUERY OK source="sources" db=0.5ms idle=1746.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 16:54:40.632 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=1664.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" = ?) [7312] 16:54:40.632 [debug] QUERY OK source="settings" db=0.1ms idle=662.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:54:40.633 [debug] QUERY OK source="settings" db=0.2ms idle=2.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:54:40.633 [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:54:40.634 [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] 16:54:40.636 [info] Sent 200 in 7ms 16:54:44.902 [info] GET /sources/3/media/27576 16:54:44.903 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "27576", "source_id" => "3"} Pipelines: [:browser] 16:54:44.903 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=1018.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" = ?) [27576] 16:54:44.904 [debug] QUERY OK source="tasks" db=0.2ms idle=1019.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" [27576] 16:54:44.904 [debug] QUERY OK source="sources" db=0.4ms idle=1019.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:54:44.904 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=1020.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" = ?) [7295] 16:54:44.905 [debug] QUERY OK source="settings" db=0.1ms idle=926.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:54:44.905 [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 [] 16:54:44.906 [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 [] 16:54:44.906 [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] 16:54:44.907 [info] Sent 200 in 4ms 16:54:53.877 [info] {"source":"oban","duration":1431,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:55:00.638 [info] {"source":"oban","duration":412,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:55:02.306 [info] GET /sources/7/media/29046 16:55:02.306 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "29046", "source_id" => "7"} Pipelines: [:browser] 16:55:02.307 [debug] QUERY OK source="media_items" db=0.3ms idle=1422.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" = ?) [29046] 16:55:02.307 [debug] QUERY OK source="tasks" db=0.2ms idle=1422.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" [29046] 16:55:02.308 [debug] QUERY OK source="sources" db=0.3ms queue=0.1ms idle=1295.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 16:55:02.308 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=423.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" = ?) [7405] 16:55:02.308 [debug] QUERY OK source="settings" db=0.1ms idle=295.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:55:02.309 [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 [] 16:55:02.309 [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 [] 16:55:02.310 [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] 16:55:02.312 [info] Sent 200 in 5ms 16:55:23.879 [info] {"source":"oban","duration":1539,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:55:53.882 [info] {"source":"oban","duration":2157,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:55:59.377 [info] GET /sources/4/media/25851 16:55:59.377 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "25851", "source_id" => "4"} Pipelines: [:browser] 16:55:59.378 [debug] QUERY OK source="media_items" db=0.1ms queue=0.1ms idle=1493.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" = ?) [25851] 16:55:59.378 [debug] QUERY OK source="sources" db=0.2ms idle=493.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 16:55:59.378 [debug] QUERY OK source="tasks" db=0.4ms idle=1253.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" [25851] 16:55:59.379 [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" = ?) [7197] 16:55:59.379 [debug] QUERY OK source="settings" db=0.1ms idle=252.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:55:59.379 [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 [] 16:55:59.380 [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 [] 16:55:59.381 [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] 16:55:59.382 [info] Sent 200 in 5ms 16:56:00.639 [info] {"source":"oban","duration":313,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:56:04.070 [info] GET /sources/4/media/26132 16:56:04.070 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "26132", "source_id" => "4"} Pipelines: [:browser] 16:56:04.071 [debug] QUERY OK source="media_items" db=0.3ms idle=1185.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" = ?) [26132] 16:56:04.071 [debug] QUERY OK source="tasks" db=0.2ms queue=0.1ms idle=1186.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" [26132] 16:56:04.072 [debug] QUERY OK source="sources" db=0.4ms idle=1186.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 16:56:04.072 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=937.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" = ?) [7214] 16:56:04.073 [debug] QUERY OK source="settings" db=0.1ms idle=188.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:56:04.073 [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 [] 16:56:04.074 [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 [] 16:56:04.075 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 16:56:04.076 [info] Sent 200 in 6ms 16:56:23.885 [info] {"source":"oban","duration":1273,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:56:23.909 [info] GET /sources 16:56:23.909 [debug] Processing with PinchflatWeb.Sources.SourceController.index/2 Parameters: %{} Pipelines: [:browser] 16:56:23.910 [debug] QUERY OK source="settings" db=0.1ms idle=735.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:56:23.910 [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 [] 16:56:23.911 [debug] QUERY OK source="settings" db=0.2ms 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 [] 16:56:23.911 [debug] QUERY OK source="settings" db=0.1ms 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 [] 16:56:23.912 [debug] QUERY OK source="settings" db=0.1ms idle=26.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:56:23.919 [debug] QUERY OK source="sources" db=6.7ms idle=2.2ms 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)) [] 16:56:23.924 [debug] QUERY OK source="sources" db=4.5ms queue=0.1ms idle=9.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", 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] 16:56:23.927 [info] Sent 200 in 17ms 16:56:53.887 [info] {"source":"oban","duration":1203,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:57:00.641 [info] {"source":"oban","duration":487,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:57:21.554 [info] GET /app_info 16:57:21.554 [debug] Processing with PinchflatWeb.Settings.SettingController.app_info/2 Parameters: %{} Pipelines: [:browser] 16:57:21.555 [debug] QUERY OK source="settings" db=0.2ms idle=1668.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:57:21.555 [debug] QUERY OK source="settings" db=0.2ms idle=1669.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:57:21.556 [debug] QUERY OK source="settings" db=0.1ms idle=1669.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:57:21.557 [debug] QUERY OK source="settings" db=0.1ms idle=1264.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:57:21.557 [debug] QUERY OK source="settings" db=0.1ms idle=262.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:57:21.558 [info] Sent 200 in 3ms 16:57:23.889 [info] {"source":"oban","duration":807,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:57:29.838 [info] GET /media_profiles 16:57:29.838 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.index/2 Parameters: %{} Pipelines: [:browser] 16:57:29.839 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1529.8ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", (SELECT count(ss0."id") AS "result" FROM "sources" AS ss0 WHERE (ss0."media_profile_id" = m0."id")) FROM "media_profiles" AS m0 WHERE (m0."marked_for_deletion_at" IS NULL) ORDER BY m0."name" [] 16:57:29.839 [debug] QUERY OK source="settings" db=0.1ms idle=953.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:57:29.840 [debug] QUERY OK source="settings" db=0.1ms idle=953.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:57:29.840 [debug] QUERY OK source="settings" db=0.1ms idle=953.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:57:29.841 [info] Sent 200 in 2ms 16:57:53.891 [info] {"source":"oban","duration":1118,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:58:00.643 [info] {"source":"oban","duration":748,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:58:12.079 [info] GET /sources/4 16:58:12.079 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "4"} Pipelines: [:browser] 16:58:12.080 [debug] QUERY OK source="sources" db=0.2ms idle=1193.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 16:58:12.080 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1193.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] 16:58:12.105 [debug] QUERY OK source="tasks" db=24.2ms idle=682.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 (?,?,?,?)) [4, "executing", "available", "scheduled", "retryable"] 16:58:12.106 [debug] QUERY OK source="oban_jobs" db=0.3ms queue=0.1ms idle=219.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" = ?) [7415] 16:58:12.106 [debug] QUERY OK source="settings" db=0.2ms idle=219.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:12.106 [debug] QUERY OK source="settings" db=0.1ms idle=26.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:58:12.107 [debug] QUERY OK source="settings" db=0.2ms 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 [] 16:58:12.108 [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] 16:58:12.110 [debug] QUERY OK source="media_items" db=1.0ms idle=2.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [4] 16:58:12.111 [debug] QUERY OK source="media_items" db=1.4ms queue=0.1ms idle=3.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] 16:58:12.112 [debug] QUERY OK source="sources" db=0.1ms 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" = ?) [4] 16:58:12.113 [debug] QUERY OK source="media_items" db=0.7ms idle=5.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [4] 16:58:12.116 [debug] QUERY OK source="media_items" db=2.8ms idle=5.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 ? [4, 10, 0] 16:58:12.117 [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" = ?) [4] 16:58:12.118 [debug] QUERY OK source="media_items" db=0.8ms idle=6.1ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((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] 16:58:12.120 [debug] QUERY OK source="media_items" db=1.1ms 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 ? [4, 10, 0] 16:58:12.120 [info] Sent 200 in 41ms 16:58:23.893 [info] {"source":"oban","duration":1563,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:58:46.592 [info] GET /sources/7 16:58:46.593 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "7"} Pipelines: [:browser] 16:58:46.593 [debug] QUERY OK source="sources" db=0.2ms idle=706.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] 16:58:46.593 [debug] QUERY OK source="media_profiles" db=0.1ms idle=707.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] 16:58:46.594 [debug] QUERY OK source="tasks" db=0.2ms idle=707.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 (?,?,?,?)) [7, "executing", "available", "scheduled", "retryable"] 16:58:46.594 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=707.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" = ?) [7421] 16:58:46.595 [debug] QUERY OK source="settings" db=0.1ms idle=124.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:46.595 [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 [] 16:58:46.595 [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 [] 16:58:46.597 [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" = ?) [7] 16:58:46.598 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=2.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 16:58:46.598 [debug] QUERY OK source="media_items" db=0.4ms idle=3.0ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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] 16:58:46.599 [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" = ?) [7] 16:58:46.599 [debug] QUERY OK source="media_items" db=0.1ms idle=3.5ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [7] 16:58:46.600 [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 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [7, 10, 0] 16:58:46.601 [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" = ?) [7] 16:58:46.601 [debug] QUERY OK source="media_items" db=0.2ms idle=2.9ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 16:58:46.602 [debug] QUERY OK source="media_items" db=0.6ms 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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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] 16:58:46.603 [info] Sent 200 in 10ms 16:58:53.895 [info] {"source":"oban","duration":1392,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:59:00.645 [info] {"source":"oban","duration":963,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 16:59:14.703 [info] GET /sources/3 16:59:14.703 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "3"} Pipelines: [:browser] 16:59:14.704 [debug] QUERY OK source="sources" db=0.2ms idle=817.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] 16:59:14.704 [debug] QUERY OK source="media_profiles" db=0.2ms idle=817.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:59:14.705 [debug] QUERY OK source="tasks" db=0.3ms idle=818.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"] 16:59:14.705 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=818.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" = ?) [7419] 16:59:14.705 [debug] QUERY OK source="settings" db=0.2ms idle=178.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:59:14.706 [debug] QUERY OK source="settings" db=0.2ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 16:59:14.707 [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 [] 16:59:14.708 [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" = ?) [3] 16:59:14.709 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms 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 ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 16:59:14.710 [debug] QUERY OK source="media_items" db=0.8ms 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 ? [3, 10, 0] 16:59:14.710 [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" = ?) [3] 16:59:14.711 [debug] QUERY OK source="media_items" db=0.1ms idle=3.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [3] 16:59:14.711 [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] 16:59:14.712 [debug] QUERY OK source="sources" db=0.2ms idle=3.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 16:59:14.713 [debug] QUERY OK source="media_items" db=0.2ms 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 ((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] 16:59:14.714 [debug] QUERY OK source="media_items" db=0.8ms 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] 16:59:14.714 [info] Sent 200 in 11ms 16:59:23.897 [info] {"source":"oban","duration":1208,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 16:59:51.638 [info] GET /sources/2 16:59:51.638 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "2"} Pipelines: [:browser] 16:59:51.638 [debug] QUERY OK source="sources" db=0.2ms idle=1751.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 16:59:51.639 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=1752.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:59:51.640 [debug] QUERY OK source="tasks" db=0.4ms idle=1752.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 (?,?,?,?)) [2, "executing", "available", "scheduled", "retryable"] 16:59:51.640 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=1038.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" = ?) [7420] 16:59:51.640 [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 [] 16:59:51.641 [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:59:51.641 [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 [] 16:59:51.643 [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" = ?) [2] 16:59:51.644 [debug] QUERY OK source="media_items" db=0.5ms idle=3.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [2] 16:59:51.645 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=3.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 ? [2, 10, 0] 16:59:51.646 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 16:59:51.646 [debug] QUERY OK source="media_items" db=0.2ms idle=4.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [2] 16:59:51.646 [debug] QUERY OK source="media_items" db=0.4ms idle=3.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 ? [2, 10, 0] 16:59:51.647 [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" = ?) [2] 16:59:51.648 [debug] QUERY OK source="media_items" db=0.2ms idle=2.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [2] 16:59:51.649 [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 ? [2, 10, 0] 16:59:51.649 [info] Sent 200 in 11ms 16:59:53.899 [info] {"source":"oban","duration":886,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:00:00.647 [info] {"source":"oban","duration":403,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:00:11.065 [info] GET /sources/4/media/26133 17:00:11.065 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "26133", "source_id" => "4"} Pipelines: [:browser] 17:00:11.066 [debug] QUERY OK source="media_items" db=0.2ms idle=1179.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" = ?) [26133] 17:00:11.066 [debug] QUERY OK source="tasks" db=0.2ms queue=0.1ms idle=1180.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" [26133] 17:00:11.067 [debug] QUERY OK source="sources" db=0.4ms idle=425.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] 17:00:11.067 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=180.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" = ?) [7215] 17:00:11.068 [debug] QUERY OK source="settings" db=0.1ms idle=181.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:00:11.068 [debug] QUERY OK source="settings" db=0.2ms idle=1.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 17:00:11.069 [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 [] 17:00:11.075 [debug] QUERY OK source="media_profiles" db=0.4ms idle=7.6ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 17:00:11.078 [info] Sent 200 in 13ms 17:00:23.901 [info] {"source":"oban","duration":1545,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:00:53.903 [info] {"source":"oban","duration":777,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:01:00.649 [info] {"source":"oban","duration":493,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:01:20.819 [info] GET /settings 17:01:20.819 [debug] Processing with PinchflatWeb.Settings.SettingController.show/2 Parameters: %{} Pipelines: [:browser] 17:01:20.819 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=1038.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:01:20.820 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=933.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:01:20.820 [debug] QUERY OK source="settings" db=0.1ms idle=933.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:01:20.821 [debug] QUERY OK source="settings" db=0.1ms idle=934.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:01:20.822 [info] Sent 200 in 3ms 17:01:23.905 [info] {"source":"oban","duration":1442,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:01:53.907 [info] {"source":"oban","duration":947,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:02:00.650 [info] {"source":"oban","duration":535,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:02:23.909 [info] {"source":"oban","duration":1425,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:02:53.911 [info] {"source":"oban","duration":968,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:03:00.651 [info] {"source":"oban","duration":447,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:03:23.913 [info] {"source":"oban","duration":1147,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:03:53.915 [info] {"source":"oban","duration":1127,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:04:00.652 [info] {"source":"oban","duration":550,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:04:23.917 [info] {"source":"oban","duration":1054,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:04:53.919 [info] {"source":"oban","duration":1608,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:05:00.653 [info] {"source":"oban","duration":514,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:05:23.921 [info] {"source":"oban","duration":963,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:05:53.923 [info] {"source":"oban","duration":1535,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:06:00.654 [info] {"source":"oban","duration":458,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:06:23.925 [info] {"source":"oban","duration":1105,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:06:53.928 [info] {"source":"oban","duration":1970,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:07:00.656 [info] {"source":"oban","duration":984,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:07:23.931 [info] {"source":"oban","duration":1667,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:07:53.933 [info] {"source":"oban","duration":915,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:08:00.658 [info] {"source":"oban","duration":961,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:08:23.935 [info] {"source":"oban","duration":1497,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:08:53.937 [info] {"source":"oban","duration":883,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:09:00.659 [info] {"source":"oban","duration":562,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:09:23.939 [info] {"source":"oban","duration":912,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:09:53.941 [info] {"source":"oban","duration":1070,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:10:00.661 [info] {"source":"oban","duration":617,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:10:23.943 [info] {"source":"oban","duration":1187,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:10:53.945 [info] {"source":"oban","duration":1170,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:11:00.663 [info] {"source":"oban","duration":1446,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:11:23.948 [info] {"source":"oban","duration":2062,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:11:53.950 [info] {"source":"oban","duration":887,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:12:00.665 [info] {"source":"oban","duration":888,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:12:23.952 [info] {"source":"oban","duration":1235,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:12:53.954 [info] {"source":"oban","duration":900,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:13:00.667 [info] {"source":"oban","duration":436,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:13:23.957 [info] {"source":"oban","duration":1509,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:13:53.958 [info] {"source":"oban","duration":887,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:14:00.668 [info] {"source":"oban","duration":329,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:14:23.960 [info] {"source":"oban","duration":790,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:14:53.962 [info] {"source":"oban","duration":808,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:15:00.670 [info] {"source":"oban","duration":608,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:15:23.964 [info] {"source":"oban","duration":1322,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:15:53.966 [info] {"source":"oban","duration":1002,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:16:00.672 [info] {"source":"oban","duration":976,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:16:23.968 [info] {"source":"oban","duration":1353,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:16:53.970 [info] {"source":"oban","duration":989,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:17:00.673 [info] {"source":"oban","duration":367,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:17:23.972 [info] {"source":"oban","duration":1421,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:17:53.974 [info] {"source":"oban","duration":977,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:18:00.674 [info] {"source":"oban","duration":237,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:18:23.976 [info] {"source":"oban","duration":1090,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:18:53.977 [info] {"source":"oban","duration":654,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:19:00.675 [info] {"source":"oban","duration":299,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:19:23.980 [info] {"source":"oban","duration":1425,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:19:53.982 [info] {"source":"oban","duration":1078,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:20:00.677 [info] {"source":"oban","duration":1466,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:20:23.984 [info] {"source":"oban","duration":900,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:20:53.986 [info] {"source":"oban","duration":1228,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:21:00.679 [info] {"source":"oban","duration":1164,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:21:23.988 [info] {"source":"oban","duration":1058,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:21:53.990 [info] {"source":"oban","duration":1168,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:22:00.681 [info] {"source":"oban","duration":353,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:22:23.992 [info] {"source":"oban","duration":991,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:22:53.994 [info] {"source":"oban","duration":1397,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:23:00.683 [info] {"source":"oban","duration":935,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:23:23.997 [info] {"source":"oban","duration":1853,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:23:53.999 [info] {"source":"oban","duration":1225,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:24:00.684 [info] {"source":"oban","duration":564,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:24:24.001 [info] {"source":"oban","duration":1001,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:24:54.003 [info] {"source":"oban","duration":1682,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:25:00.686 [info] {"source":"oban","duration":954,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:25:24.005 [info] {"source":"oban","duration":1235,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:25:54.007 [info] {"source":"oban","duration":1182,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:26:00.687 [info] {"source":"oban","duration":332,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:26:24.009 [info] {"source":"oban","duration":1258,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:26:54.011 [info] {"source":"oban","duration":1204,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:27:00.689 [info] {"source":"oban","duration":806,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:27:24.014 [info] {"source":"oban","duration":1354,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:27:54.016 [info] {"source":"oban","duration":926,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:28:00.690 [info] {"source":"oban","duration":324,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:28:24.018 [info] {"source":"oban","duration":1285,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:28:54.020 [info] {"source":"oban","duration":900,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:29:00.692 [info] {"source":"oban","duration":1058,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:29:24.022 [info] {"source":"oban","duration":1510,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:29:54.025 [info] {"source":"oban","duration":1781,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:30:00.694 [info] {"source":"oban","duration":465,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:30:24.027 [info] {"source":"oban","duration":1506,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:30:54.029 [info] {"source":"oban","duration":1575,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:31:00.695 [info] {"source":"oban","duration":272,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:31:24.032 [info] {"source":"oban","duration":1363,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:31:54.034 [info] {"source":"oban","duration":975,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:32:00.696 [info] {"source":"oban","duration":307,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:32:24.036 [info] {"source":"oban","duration":791,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:32:54.038 [info] {"source":"oban","duration":978,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:33:00.697 [info] {"source":"oban","duration":393,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:33:24.041 [info] {"source":"oban","duration":1584,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:33:54.043 [info] {"source":"oban","duration":1447,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:34:00.699 [info] {"source":"oban","duration":481,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:34:24.046 [info] {"source":"oban","duration":1109,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:34:54.048 [info] {"source":"oban","duration":892,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:35:00.701 [info] {"source":"oban","duration":461,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:35:24.051 [info] {"source":"oban","duration":1665,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:35:54.053 [info] {"source":"oban","duration":827,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:36:00.703 [info] {"source":"oban","duration":428,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:36:24.055 [info] {"source":"oban","duration":918,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:36:54.057 [info] {"source":"oban","duration":1395,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:37:00.705 [info] {"source":"oban","duration":466,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:37:24.059 [info] {"source":"oban","duration":1114,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:37:54.061 [info] {"source":"oban","duration":1593,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:38:00.707 [info] {"source":"oban","duration":851,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:38:24.063 [info] {"source":"oban","duration":1193,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:38:54.065 [info] {"source":"oban","duration":1020,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:39:00.709 [info] {"source":"oban","duration":664,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:39:24.067 [info] {"source":"oban","duration":1138,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:39:54.069 [info] {"source":"oban","duration":983,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:40:00.711 [info] {"source":"oban","duration":833,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:40:24.071 [info] {"source":"oban","duration":1346,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:40:54.073 [info] {"source":"oban","duration":1363,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:41:00.712 [info] {"source":"oban","duration":642,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:41:24.075 [info] {"source":"oban","duration":866,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:41:54.077 [info] {"source":"oban","duration":1238,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:42:00.713 [info] {"source":"oban","duration":484,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:42:24.079 [info] {"source":"oban","duration":1213,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:42:54.081 [info] {"source":"oban","duration":748,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:43:00.715 [info] {"source":"oban","duration":569,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:43:24.083 [info] {"source":"oban","duration":733,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:43:54.085 [info] {"source":"oban","duration":1001,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:44:00.716 [info] {"source":"oban","duration":544,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:44:24.087 [info] {"source":"oban","duration":1290,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:44:54.089 [info] {"source":"oban","duration":1325,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:45:00.717 [info] {"source":"oban","duration":502,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:45:24.091 [info] {"source":"oban","duration":978,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:45:54.093 [info] {"source":"oban","duration":1357,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:46:00.719 [info] {"source":"oban","duration":1396,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:46:24.096 [info] {"source":"oban","duration":1645,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:46:54.097 [info] {"source":"oban","duration":974,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:47:00.721 [info] {"source":"oban","duration":949,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:47:24.100 [info] {"source":"oban","duration":1152,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:47:54.101 [info] {"source":"oban","duration":1177,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:48:00.722 [info] {"source":"oban","duration":368,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:48:24.103 [info] {"source":"oban","duration":882,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:48:54.105 [info] {"source":"oban","duration":811,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:49:00.723 [info] {"source":"oban","duration":526,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:49:24.107 [info] {"source":"oban","duration":1022,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:49:54.109 [info] {"source":"oban","duration":744,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:50:00.724 [info] {"source":"oban","duration":390,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:50:24.110 [info] {"source":"oban","duration":1029,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:50:54.113 [info] {"source":"oban","duration":1737,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:51:00.758 [info] {"source":"oban","duration":605,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:51:24.115 [info] {"source":"oban","duration":622,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:51:54.117 [info] {"source":"oban","duration":1108,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:52:00.759 [info] {"source":"oban","duration":288,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:52:24.119 [info] {"source":"oban","duration":666,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:52:54.121 [info] {"source":"oban","duration":1659,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:53:00.760 [info] {"source":"oban","duration":443,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:53:24.125 [info] {"source":"oban","duration":2657,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:53:54.128 [info] {"source":"oban","duration":1625,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:54:00.762 [info] {"source":"oban","duration":391,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:54:24.129 [info] {"source":"oban","duration":1363,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:54:54.131 [info] {"source":"oban","duration":956,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:55:00.763 [info] {"source":"oban","duration":276,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:55:24.133 [info] {"source":"oban","duration":1271,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:55:54.135 [info] {"source":"oban","duration":937,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:56:00.764 [info] {"source":"oban","duration":194,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:56:24.137 [info] {"source":"oban","duration":1147,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:56:54.139 [info] {"source":"oban","duration":1494,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:57:00.765 [info] {"source":"oban","duration":413,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:57:24.141 [info] {"source":"oban","duration":1069,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:57:54.143 [info] {"source":"oban","duration":1341,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:58:00.766 [info] {"source":"oban","duration":400,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:58:24.145 [info] {"source":"oban","duration":933,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:58:54.148 [info] {"source":"oban","duration":1318,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:59:00.768 [info] {"source":"oban","duration":569,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 17:59:24.151 [info] {"source":"oban","duration":1763,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 17:59:54.152 [info] {"source":"oban","duration":1239,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:00:00.769 [info] {"source":"oban","duration":359,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:00:24.154 [info] {"source":"oban","duration":1021,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:00:54.156 [info] {"source":"oban","duration":759,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:01:00.770 [info] {"source":"oban","duration":356,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:01:24.158 [info] {"source":"oban","duration":979,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:01:54.160 [info] {"source":"oban","duration":955,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:02:00.772 [info] {"source":"oban","duration":564,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:02:24.162 [info] {"source":"oban","duration":1431,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:02:54.164 [info] {"source":"oban","duration":1221,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:03:00.773 [info] {"source":"oban","duration":506,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:03:24.166 [info] {"source":"oban","duration":1065,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:03:54.168 [info] {"source":"oban","duration":1471,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:04:00.774 [info] {"source":"oban","duration":568,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:04:24.170 [info] {"source":"oban","duration":863,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:04:54.172 [info] {"source":"oban","duration":889,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:05:00.776 [info] {"source":"oban","duration":463,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:05:24.174 [info] {"source":"oban","duration":873,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:05:54.176 [info] {"source":"oban","duration":1097,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:06:00.777 [info] {"source":"oban","duration":305,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:06:24.178 [info] {"source":"oban","duration":1342,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:06:54.180 [info] {"source":"oban","duration":1121,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:07:00.778 [info] {"source":"oban","duration":337,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:07:24.182 [info] {"source":"oban","duration":1208,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:07:54.184 [info] {"source":"oban","duration":876,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:08:00.779 [info] {"source":"oban","duration":349,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:08:24.186 [info] {"source":"oban","duration":1710,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:08:54.188 [info] {"source":"oban","duration":959,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:09:00.780 [info] {"source":"oban","duration":448,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:09:24.189 [info] {"source":"oban","duration":671,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:09:54.191 [info] {"source":"oban","duration":1098,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:10:00.782 [info] {"source":"oban","duration":909,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:10:24.194 [info] {"source":"oban","duration":1791,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:10:54.196 [info] {"source":"oban","duration":1379,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:11:00.783 [info] {"source":"oban","duration":439,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:11:24.198 [info] {"source":"oban","duration":1567,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:11:54.200 [info] {"source":"oban","duration":1143,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:12:00.785 [info] {"source":"oban","duration":1189,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:12:24.202 [info] {"source":"oban","duration":1660,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:12:54.204 [info] {"source":"oban","duration":1484,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:13:00.787 [info] {"source":"oban","duration":641,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:13:24.206 [info] {"source":"oban","duration":1086,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:13:54.209 [info] {"source":"oban","duration":1689,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:14:00.789 [info] {"source":"oban","duration":397,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:14:24.211 [info] {"source":"oban","duration":1027,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:14:54.214 [info] {"source":"oban","duration":1932,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:15:00.790 [info] {"source":"oban","duration":314,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:15:24.216 [info] {"source":"oban","duration":788,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:15:54.218 [info] {"source":"oban","duration":1239,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:16:00.791 [info] {"source":"oban","duration":505,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:16:24.220 [info] {"source":"oban","duration":858,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:16:54.222 [info] {"source":"oban","duration":1135,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:17:00.792 [info] {"source":"oban","duration":399,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:17:24.224 [info] {"source":"oban","duration":1259,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:17:54.226 [info] {"source":"oban","duration":1262,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:18:00.794 [info] {"source":"oban","duration":746,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:18:24.228 [info] {"source":"oban","duration":1439,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:18:54.230 [info] {"source":"oban","duration":1042,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:19:00.796 [info] {"source":"oban","duration":747,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:19:24.232 [info] {"source":"oban","duration":1375,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:19:54.234 [info] {"source":"oban","duration":1584,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:20:00.797 [info] {"source":"oban","duration":501,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:20:24.236 [info] {"source":"oban","duration":1506,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:20:54.238 [info] {"source":"oban","duration":1291,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:21:00.799 [info] {"source":"oban","duration":699,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:21:24.241 [info] {"source":"oban","duration":1792,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:21:54.243 [info] {"source":"oban","duration":1553,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:22:00.800 [info] {"source":"oban","duration":397,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:22:24.246 [info] {"source":"oban","duration":1762,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:22:54.248 [info] {"source":"oban","duration":1426,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:23:00.802 [info] {"source":"oban","duration":588,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:23:24.250 [info] {"source":"oban","duration":912,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:23:54.252 [info] {"source":"oban","duration":1268,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:24:00.803 [info] {"source":"oban","duration":535,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:24:24.254 [info] {"source":"oban","duration":918,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:24:54.256 [info] {"source":"oban","duration":1181,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:25:00.806 [info] {"source":"oban","duration":510,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:25:24.258 [info] {"source":"oban","duration":1089,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:25:54.260 [info] {"source":"oban","duration":946,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:26:00.807 [info] {"source":"oban","duration":302,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:26:24.262 [info] {"source":"oban","duration":677,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:26:54.263 [info] {"source":"oban","duration":1612,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:27:00.809 [info] {"source":"oban","duration":1092,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:27:24.265 [info] {"source":"oban","duration":1240,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:27:54.268 [info] {"source":"oban","duration":1592,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:28:00.811 [info] {"source":"oban","duration":788,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:28:24.269 [info] {"source":"oban","duration":1454,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:28:54.271 [info] {"source":"oban","duration":1284,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:29:00.813 [info] {"source":"oban","duration":1119,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:29:12.049 [info] GET / 18:29:12.049 [debug] Processing with PinchflatWeb.Pages.PageController.home/2 Parameters: %{} Pipelines: [:browser] 18:29:12.050 [debug] QUERY OK source="settings" db=0.3ms 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 [] 18:29:12.050 [debug] QUERY OK source="media_profiles" db=0.2ms idle=159.2ms SELECT count(m0."id") FROM "media_profiles" AS m0 [] 18:29:12.051 [debug] QUERY OK source="sources" db=0.2ms idle=159.6ms SELECT count(s0."id") FROM "sources" AS s0 [] 18:29:12.056 [debug] QUERY OK source="media_items" db=4.8ms idle=159.9ms SELECT sum(m0."media_size_bytes") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 18:29:12.058 [debug] QUERY OK source="media_items" db=1.6ms queue=0.1ms idle=165.0ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE (NOT (m0."media_filepath" IS NULL)) [] 18:29:12.058 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=7.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:29:12.059 [debug] QUERY OK source="settings" db=0.1ms idle=7.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:29:12.059 [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 [] 18:29:12.060 [debug] QUERY OK source="tasks" db=0.2ms idle=4.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"] 18:29:12.062 [debug] QUERY OK source="media_items" db=0.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 (m0."media_filepath" IS NULL)) [] 18:29:12.062 [debug] QUERY OK source="media_items" db=0.4ms 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] 18:29:12.063 [debug] QUERY OK source="sources" db=0.3ms 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" IN (?,?,?)) [3, 2, 7] 18:29:12.066 [debug] QUERY OK source="media_items" db=2.5ms 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"))) [] 18:29:12.067 [debug] QUERY OK source="media_items" db=0.4ms 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] 18:29:12.068 [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" = ?) [4] 18:29:12.069 [info] Sent 200 in 19ms 18:29:24.273 [info] {"source":"oban","duration":751,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:29:54.275 [info] {"source":"oban","duration":1530,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:30:00.814 [info] {"source":"oban","duration":548,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:30:24.277 [info] {"source":"oban","duration":1335,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:30:54.279 [info] {"source":"oban","duration":1148,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:31:00.815 [info] {"source":"oban","duration":252,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:31:24.281 [info] {"source":"oban","duration":1265,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:31:50.055 [info] GET /sources/2/media/18161/edit 18:31:50.055 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "18161", "source_id" => "2"} Pipelines: [:browser] 18:31:50.055 [debug] QUERY OK source="media_items" db=0.4ms idle=163.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" = ?) [18161] 18:31:50.056 [debug] QUERY OK source="settings" db=0.1ms idle=164.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:31:50.056 [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 [] 18:31:50.057 [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 [] 18:31:50.058 [info] Sent 200 in 3ms 18:31:50.554 [info] GET /sources/2/media/21936 18:31:50.554 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "21936", "source_id" => "2"} Pipelines: [:browser] 18:31:50.555 [debug] QUERY OK source="media_items" db=0.3ms idle=658.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" = ?) [21936] 18:31:50.556 [debug] QUERY OK source="tasks" db=0.2ms queue=0.1ms idle=499.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" [21936] 18:31:50.556 [debug] QUERY OK source="sources" db=0.3ms idle=499.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" = ?) [2] 18:31:50.556 [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" IN (?,?)) [6460, 6480] 18:31:50.557 [debug] QUERY OK source="settings" db=0.1ms idle=499.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:31:50.557 [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 [] 18:31:50.558 [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 [] 18:31:50.558 [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] 18:31:50.560 [info] Sent 200 in 5ms 18:31:51.055 [info] GET /sources/2/media/25948/edit 18:31:51.055 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "25948", "source_id" => "2"} Pipelines: [:browser] 18:31:51.055 [debug] QUERY OK source="media_items" db=0.2ms idle=498.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" = ?) [25948] 18:31:51.056 [debug] QUERY OK source="settings" db=0.1ms 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 [] 18:31:51.056 [debug] QUERY OK source="settings" db=0.2ms 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 [] 18:31:51.057 [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 [] 18:31:51.057 [info] Sent 200 in 2ms 18:31:51.555 [info] GET /sources/4/media/19960 18:31:51.556 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "19960", "source_id" => "4"} Pipelines: [:browser] 18:31:51.556 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=657.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" = ?) [19960] 18:31:51.557 [debug] QUERY OK source="tasks" db=0.3ms idle=501.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" [19960] 18:31:51.557 [debug] QUERY OK source="sources" db=0.3ms idle=500.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 18:31:51.557 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=501.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 (?,?,?)) [6334, 6489, 7231] 18:31:51.558 [debug] QUERY OK source="settings" db=0.1ms idle=501.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:31:51.558 [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 [] 18:31:51.559 [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 [] 18:31:51.560 [debug] QUERY OK source="media_profiles" db=0.3ms 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] 18:31:51.561 [info] Sent 200 in 5ms 18:31:52.057 [info] GET /sources/4/media/28076/edit 18:31:52.057 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "28076", "source_id" => "4"} Pipelines: [:browser] 18:31:52.058 [debug] QUERY OK source="media_items" db=0.4ms queue=0.1ms idle=499.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" = ?) [28076] 18:31:52.059 [debug] QUERY OK source="settings" db=0.1ms idle=500.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:31:52.059 [debug] QUERY OK source="settings" db=0.1ms idle=499.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:31:52.060 [debug] QUERY OK source="settings" db=0.2ms idle=499.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:31:52.060 [info] Sent 200 in 3ms 18:31:52.558 [info] GET /sources/2/media/27892/edit 18:31:52.558 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "27892", "source_id" => "2"} Pipelines: [:browser] 18:31:52.559 [debug] QUERY OK source="media_items" db=0.3ms idle=658.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" = ?) [27892] 18:31:52.559 [debug] QUERY OK source="settings" db=0.1ms idle=501.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:31:52.560 [debug] QUERY OK source="settings" db=0.1ms idle=500.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:31:52.560 [debug] QUERY OK source="settings" db=0.1ms idle=501.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:31:52.561 [info] Sent 200 in 3ms 18:31:53.059 [info] GET /sources/4/media/26965 18:31:53.059 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "26965", "source_id" => "4"} Pipelines: [:browser] 18:31:53.060 [debug] QUERY OK source="media_items" db=0.2ms idle=500.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" = ?) [26965] 18:31:53.060 [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" = ?) [4] 18:31:53.060 [debug] QUERY OK source="tasks" db=0.3ms queue=0.1ms idle=500.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" [26965] 18:31:53.061 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=500.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" = ?) [7261] 18:31:53.061 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=158.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:31:53.062 [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 [] 18:31:53.062 [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 [] 18:31:53.063 [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] 18:31:53.065 [info] Sent 200 in 5ms 18:31:53.361 [info] GET /sources/3/media/19451 18:31:53.361 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "19451", "source_id" => "3"} Pipelines: [:browser] 18:31:53.362 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms 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" = ?) [19451] 18:31:53.363 [debug] QUERY OK source="tasks" db=0.1ms idle=300.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" [19451] 18:31:53.363 [debug] QUERY OK source="sources" db=0.3ms idle=300.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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:31:53.363 [debug] QUERY OK source="settings" db=0.2ms 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 [] 18:31:53.364 [debug] QUERY OK source="settings" db=0.1ms idle=300.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:31:53.364 [debug] QUERY OK source="settings" db=0.2ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:31:53.365 [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] 18:31:53.367 [info] Sent 200 in 5ms 18:31:53.660 [info] GET /sources/2/media/23252 18:31:53.661 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "23252", "source_id" => "2"} Pipelines: [:browser] 18:31:53.661 [debug] QUERY OK source="media_items" db=0.3ms idle=298.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" = ?) [23252] 18:31:53.662 [debug] QUERY OK source="tasks" db=0.2ms idle=298.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" [23252] 18:31:53.662 [debug] QUERY OK source="sources" db=0.3ms idle=297.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 18:31:53.662 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=297.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 (?,?)) [6542, 6563] 18:31:53.663 [debug] QUERY OK source="settings" db=0.1ms idle=297.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:31:53.663 [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 [] 18:31:53.664 [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 [] 18:31:53.664 [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] 18:31:53.666 [info] Sent 200 in 5ms 18:31:53.965 [info] GET /sources/7/media/23293 18:31:53.965 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "23293", "source_id" => "7"} Pipelines: [:browser] 18:31:53.966 [debug] QUERY OK source="media_items" db=0.1ms idle=302.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" = ?) [23293] 18:31:53.966 [debug] QUERY OK source="tasks" db=0.2ms idle=302.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" [23293] 18:31:53.966 [debug] QUERY OK source="sources" db=0.3ms idle=302.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 18:31:53.967 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=302.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" = ?) [6544] 18:31:53.967 [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 [] 18:31:53.967 [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 [] 18:31:53.968 [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 [] 18:31:53.968 [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] 18:31:53.970 [info] Sent 200 in 4ms 18:31:54.283 [info] {"source":"oban","duration":939,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:32:00.817 [info] {"source":"oban","duration":824,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:32:05.536 [info] GET /sources/4/media/26965/edit 18:32:05.536 [info] GET /sources/3/media/19451/edit 18:32:05.536 [info] GET /sources/2/media/23252/edit 18:32:05.536 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "26965", "source_id" => "4"} Pipelines: [:browser] 18:32:05.537 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "19451", "source_id" => "3"} Pipelines: [:browser] 18:32:05.537 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "23252", "source_id" => "2"} Pipelines: [:browser] 18:32:05.537 [debug] QUERY OK source="media_items" db=0.3ms idle=1645.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" = ?) [26965] 18:32:05.537 [debug] QUERY OK source="media_items" db=0.2ms idle=1645.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" = ?) [19451] 18:32:05.537 [debug] QUERY OK source="media_items" db=0.5ms idle=1645.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" = ?) [23252] 18:32:05.538 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=610.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:32:05.538 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=1612.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:32:05.538 [debug] QUERY OK source="settings" db=0.5ms idle=0.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:32:05.538 [debug] QUERY OK source="settings" db=0.3ms queue=0.2ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:32:05.538 [debug] QUERY OK source="settings" db=0.1ms 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 [] 18:32:05.539 [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 [] 18:32:05.539 [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 [] 18:32:05.539 [debug] QUERY OK source="settings" db=0.4ms 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 [] 18:32:05.540 [debug] QUERY OK source="settings" db=0.6ms 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 [] 18:32:05.540 [info] Sent 200 in 3ms 18:32:05.540 [info] Sent 200 in 4ms 18:32:05.541 [info] Sent 200 in 4ms 18:32:06.135 [info] GET /sources/4/media/22781 18:32:06.135 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "22781", "source_id" => "4"} Pipelines: [:browser] 18:32:06.136 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=597.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" = ?) [22781] 18:32:06.137 [debug] QUERY OK source="tasks" db=0.2ms idle=597.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" [22781] 18:32:06.137 [debug] QUERY OK source="sources" db=0.4ms idle=597.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 18:32:06.137 [debug] QUERY OK source="oban_jobs" db=0.0ms idle=597.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" = ?) [6513] 18:32:06.138 [debug] QUERY OK source="settings" db=0.1ms idle=208.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:32:06.138 [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 [] 18:32:06.139 [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 [] 18:32:06.139 [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] 18:32:06.141 [info] Sent 200 in 5ms 18:32:06.437 [info] GET /sources/7/media/28489/edit 18:32:06.437 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "28489", "source_id" => "7"} Pipelines: [:browser] 18:32:06.437 [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" = ?) [28489] 18:32:06.438 [debug] QUERY OK source="settings" db=0.1ms idle=300.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:32:06.438 [debug] QUERY OK source="settings" db=0.1ms idle=300.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:32:06.439 [debug] QUERY OK source="settings" db=0.1ms idle=299.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:32:06.439 [info] Sent 200 in 2ms 18:32:06.739 [info] GET /sources/2/media/19298 18:32:06.739 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "19298", "source_id" => "2"} Pipelines: [:browser] 18:32:06.740 [debug] QUERY OK source="media_items" db=0.3ms idle=600.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" = ?) [19298] 18:32:06.741 [debug] QUERY OK source="sources" db=0.3ms idle=302.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" = ?) [2] 18:32:06.741 [debug] QUERY OK source="tasks" db=0.3ms queue=0.1ms idle=302.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" [19298] 18:32:06.741 [debug] QUERY OK source="settings" db=0.1ms idle=302.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:32:06.741 [debug] QUERY OK source="settings" db=0.1ms idle=302.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:32:06.742 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:32:06.743 [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] 18:32:06.744 [info] Sent 200 in 5ms 18:32:07.038 [info] GET /sources/4/media/22589 18:32:07.038 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "22589", "source_id" => "4"} Pipelines: [:browser] 18:32:07.039 [debug] QUERY OK source="media_items" db=0.2ms idle=297.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" = ?) [22589] 18:32:07.039 [debug] QUERY OK source="sources" db=0.1ms idle=297.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 18:32:07.040 [debug] QUERY OK source="tasks" db=0.3ms idle=297.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" [22589] 18:32:07.040 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=297.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 (?,?)) [6500, 7247] 18:32:07.041 [debug] QUERY OK source="settings" db=0.1ms idle=109.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:32:07.041 [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 [] 18:32:07.042 [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 [] 18:32:07.042 [debug] QUERY OK source="media_profiles" db=0.1ms queue=0.1ms idle=2.2ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 18:32:07.043 [info] Sent 200 in 5ms 18:32:07.265 [info] GET /sources/7/media/19339 18:32:07.265 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "19339", "source_id" => "7"} Pipelines: [:browser] 18:32:07.266 [debug] QUERY OK source="media_items" db=0.2ms idle=225.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" = ?) [19339] 18:32:07.266 [debug] QUERY OK source="tasks" db=0.3ms idle=225.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" [19339] 18:32:07.266 [debug] QUERY OK source="sources" db=0.3ms idle=224.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 18:32:07.267 [debug] QUERY OK source="settings" db=0.1ms idle=225.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:32:07.267 [debug] QUERY OK source="settings" db=0.1ms idle=224.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:32:07.268 [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 [] 18:32:07.268 [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] 18:32:07.270 [info] Sent 200 in 4ms 18:32:07.491 [info] GET /sources/4/media/22780 18:32:07.491 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "22780", "source_id" => "4"} Pipelines: [:browser] 18:32:07.491 [debug] QUERY OK source="media_items" db=0.2ms idle=224.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" = ?) [22780] 18:32:07.492 [debug] QUERY OK source="tasks" db=0.2ms idle=224.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" [22780] 18:32:07.492 [debug] QUERY OK source="sources" db=0.3ms idle=224.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 18:32:07.492 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=224.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 (?,?)) [6512, 7262] 18:32:07.493 [debug] QUERY OK source="settings" db=0.1ms 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 [] 18:32:07.493 [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 [] 18:32:07.494 [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 [] 18:32:07.495 [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] 18:32:07.496 [info] Sent 200 in 5ms 18:32:07.716 [info] GET /sources/7/media/20841 18:32:07.717 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "20841", "source_id" => "7"} Pipelines: [:browser] 18:32:07.717 [debug] QUERY OK source="media_items" db=0.2ms idle=224.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" = ?) [20841] 18:32:07.718 [debug] QUERY OK source="tasks" db=0.3ms idle=224.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" [20841] 18:32:07.718 [debug] QUERY OK source="sources" db=0.4ms idle=224.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 18:32:07.718 [debug] QUERY OK source="settings" db=0.0ms idle=224.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:32:07.719 [debug] QUERY OK source="settings" db=0.1ms idle=223.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:32:07.719 [debug] QUERY OK source="settings" db=0.3ms idle=1.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:32:07.721 [debug] QUERY OK source="media_profiles" db=0.2ms 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] 18:32:07.722 [info] Sent 200 in 5ms 18:32:22.389 [info] GET /sources/7/media/25154 18:32:22.389 [info] GET /sources/4/media/25573 18:32:22.389 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "25154", "source_id" => "7"} Pipelines: [:browser] 18:32:22.389 [info] GET /sources/2/media/16829 18:32:22.389 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "25573", "source_id" => "4"} Pipelines: [:browser] 18:32:22.390 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "16829", "source_id" => "2"} Pipelines: [:browser] 18:32:22.390 [debug] QUERY OK source="media_items" db=0.3ms idle=1498.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" = ?) [25154] 18:32:22.390 [debug] QUERY OK source="media_items" db=0.2ms idle=1498.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" = ?) [16829] 18:32:22.390 [debug] QUERY OK source="media_items" db=0.3ms idle=1498.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" = ?) [25573] 18:32:22.391 [debug] QUERY OK source="tasks" db=0.2ms idle=1429.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" [25154] 18:32:22.391 [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" [25573] 18:32:22.391 [debug] QUERY OK source="tasks" db=0.5ms 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" [16829] 18:32:22.391 [debug] QUERY OK source="sources" db=0.7ms idle=428.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 18:32:22.391 [debug] QUERY OK source="sources" db=0.7ms 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" = ?) [2] 18:32:22.392 [debug] QUERY OK source="sources" db=0.9ms 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] 18:32:22.392 [debug] QUERY OK source="oban_jobs" db=0.7ms 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" = ?) [7157] 18:32:22.393 [debug] QUERY OK source="oban_jobs" db=0.3ms queue=0.1ms idle=1.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" = ?) [7180] 18:32:22.393 [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 [] 18:32:22.393 [debug] QUERY OK source="settings" db=0.3ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:32:22.393 [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 [] 18:32:22.393 [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 [] 18:32:22.394 [debug] QUERY OK source="settings" db=0.4ms 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 [] 18:32:22.394 [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 [] 18:32:22.394 [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 [] 18:32:22.394 [debug] QUERY OK source="settings" db=0.1ms 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 [] 18:32:22.395 [debug] QUERY OK source="settings" db=0.5ms idle=0.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:32:22.395 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 18:32:22.395 [debug] QUERY OK source="media_profiles" db=0.3ms idle=1.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 18:32:22.396 [info] GET /sources/3/media/18312 18:32:22.396 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "18312", "source_id" => "3"} Pipelines: [:browser] 18:32:22.396 [debug] QUERY OK source="media_profiles" db=0.5ms queue=0.3ms idle=1.3ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 18:32:22.397 [info] Sent 200 in 7ms 18:32:22.397 [debug] QUERY OK source="media_items" db=0.2ms queue=0.4ms 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" = ?) [18312] 18:32:22.397 [debug] QUERY OK source="tasks" db=0.2ms queue=0.1ms idle=2.3ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [18312] 18:32:22.398 [info] Sent 200 in 8ms 18:32:22.398 [debug] QUERY OK source="sources" db=0.4ms idle=2.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 18:32:22.398 [info] Sent 200 in 8ms 18:32:22.398 [debug] QUERY OK source="settings" db=0.1ms idle=2.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:32:22.399 [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 [] 18:32:22.399 [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 [] 18:32:22.400 [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] 18:32:22.401 [info] Sent 200 in 4ms 18:32:23.298 [info] GET /sources/2/media/20614 18:32:23.298 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "20614", "source_id" => "2"} Pipelines: [:browser] 18:32:23.298 [debug] QUERY OK source="media_items" db=0.2ms idle=900.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" = ?) [20614] 18:32:23.299 [debug] QUERY OK source="tasks" db=0.1ms idle=900.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" [20614] 18:32:23.299 [debug] QUERY OK source="sources" db=0.2ms idle=899.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 18:32:23.299 [debug] QUERY OK source="settings" db=0.1ms idle=899.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:32:23.300 [debug] QUERY OK source="settings" db=0.1ms idle=335.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:32:23.300 [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 [] 18:32:23.301 [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] 18:32:23.302 [info] Sent 200 in 4ms 18:32:23.524 [info] GET /sources/3/media/21895 18:32:23.524 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "21895", "source_id" => "3"} Pipelines: [:browser] 18:32:23.525 [debug] QUERY OK source="media_items" db=0.3ms idle=225.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" = ?) [21895] 18:32:23.525 [debug] QUERY OK source="tasks" db=0.2ms idle=225.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" [21895] 18:32:23.525 [debug] QUERY OK source="sources" db=0.2ms idle=225.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] 18:32:23.526 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=225.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 (?,?)) [6458, 6479] 18:32:23.527 [debug] QUERY OK source="settings" db=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 [] 18:32:23.527 [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 [] 18:32:23.527 [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 [] 18:32:23.528 [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] 18:32:23.529 [info] Sent 200 in 5ms 18:32:23.747 [info] GET /sources/4/media/25850 18:32:23.747 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "25850", "source_id" => "4"} Pipelines: [:browser] 18:32:23.748 [debug] QUERY OK source="media_items" db=0.2ms idle=221.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" = ?) [25850] 18:32:23.748 [debug] QUERY OK source="tasks" db=0.3ms idle=221.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" [25850] 18:32:23.748 [debug] QUERY OK source="sources" db=0.3ms idle=221.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] 18:32:23.749 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=221.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" = ?) [7196] 18:32:23.749 [debug] QUERY OK source="settings" db=0.1ms idle=221.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:32:23.750 [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 [] 18:32:23.750 [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 [] 18:32:23.751 [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] 18:32:23.752 [info] Sent 200 in 5ms 18:32:23.928 [info] GET /sources/7/media/23293/edit 18:32:23.928 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "23293", "source_id" => "7"} Pipelines: [:browser] 18:32:23.929 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=179.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" = ?) [23293] 18:32:23.930 [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 [] 18:32:23.930 [debug] QUERY OK source="settings" db=0.1ms idle=179.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:32:23.930 [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 [] 18:32:23.931 [info] Sent 200 in 3ms 18:32:24.110 [info] GET /sources/3/media/16982 18:32:24.110 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "16982", "source_id" => "3"} Pipelines: [:browser] 18:32:24.111 [debug] QUERY OK source="media_items" db=0.1ms idle=181.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" = ?) [16982] 18:32:24.111 [debug] QUERY OK source="tasks" db=0.1ms idle=181.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" [16982] 18:32:24.111 [debug] QUERY OK source="sources" db=0.2ms idle=181.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] 18:32:24.112 [debug] QUERY OK source="settings" db=0.1ms idle=181.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:32:24.112 [debug] QUERY OK source="settings" db=0.1ms 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 [] 18:32:24.112 [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:32:24.113 [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] 18:32:24.114 [info] Sent 200 in 4ms 18:32:24.285 [info] {"source":"oban","duration":1058,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:32:24.291 [info] GET /sources/7/media/21785 18:32:24.291 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "21785", "source_id" => "7"} Pipelines: [:browser] 18:32:24.291 [debug] QUERY OK source="media_items" db=0.3ms idle=179.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" = ?) [21785] 18:32:24.292 [debug] QUERY OK source="sources" db=0.1ms idle=179.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 18:32:24.292 [debug] QUERY OK source="tasks" db=0.3ms idle=179.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" [21785] 18:32:24.292 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=179.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" = ?) [6448] 18:32:24.293 [debug] QUERY OK source="settings" db=0.1ms idle=7.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:32:24.293 [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 [] 18:32:24.293 [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:32:24.294 [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] 18:32:24.296 [info] Sent 200 in 5ms 18:32:54.287 [info] {"source":"oban","duration":1147,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:33:00.819 [info] {"source":"oban","duration":646,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:33:22.568 [info] GET /sources/4/media/17876 18:33:22.568 [info] GET /sources/2/media/18161 18:33:22.568 [info] GET /sources/2/media/25948 18:33:22.568 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "17876", "source_id" => "4"} Pipelines: [:browser] 18:33:22.568 [info] GET /sources/4/media/17876/edit 18:33:22.568 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "25948", "source_id" => "2"} Pipelines: [:browser] 18:33:22.568 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "18161", "source_id" => "2"} Pipelines: [:browser] 18:33:22.568 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "17876", "source_id" => "4"} Pipelines: [:browser] 18:33:22.569 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=676.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" = ?) [17876] 18:33:22.569 [debug] QUERY OK source="media_items" db=0.2ms idle=676.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" = ?) [25948] 18:33:22.569 [debug] QUERY OK source="media_items" db=0.5ms idle=676.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" = ?) [18161] 18:33:22.569 [debug] QUERY OK source="media_items" db=0.4ms idle=676.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" = ?) [17876] 18:33:22.569 [debug] QUERY OK source="tasks" db=0.4ms 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" [17876] 18:33:22.569 [debug] QUERY OK source="tasks" db=0.4ms queue=0.1ms idle=485.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" [25948] 18:33:22.570 [debug] QUERY OK source="tasks" db=0.5ms idle=0.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" [18161] 18:33:22.570 [debug] QUERY OK source="settings" db=0.4ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:33:22.570 [debug] QUERY OK source="sources" db=1.0ms idle=0.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 18:33:22.570 [debug] QUERY OK source="sources" db=1.0ms queue=0.1ms idle=0.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 18:33:22.570 [debug] QUERY OK source="sources" db=0.8ms queue=0.3ms idle=0.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 18:33:22.571 [debug] QUERY OK source="settings" db=1.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 [] 18:33:22.571 [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 [] 18:33:22.572 [debug] QUERY OK source="oban_jobs" db=0.9ms queue=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" IN (?,?)) [7205, 7235] 18:33:22.572 [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 [] 18:33:22.572 [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 [] 18:33:22.572 [debug] QUERY OK source="settings" db=0.1ms queue=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 [] 18:33:22.573 [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 [] 18:33:22.573 [debug] QUERY OK source="settings" db=0.1ms 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 [] 18:33:22.573 [info] Sent 200 in 5ms 18:33:22.573 [debug] QUERY OK source="media_profiles" db=0.2ms idle=1.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 18:33:22.574 [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 [] 18:33:22.574 [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] 18:33:22.575 [info] Sent 200 in 7ms 18:33:22.576 [info] Sent 200 in 7ms 18:33:22.578 [debug] QUERY OK source="oban_jobs" db=8.0ms queue=0.1ms 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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)) [6418, 6430, 6441, 6453, 6465, 6476, 6490, 6502, 6514, 6525, 6536, 6549, 6560, 6572, 7150, 7165, 7183, 7198, 7216, 7232, 7248, 7263, 7276, 7290, 7304, 7321, 7334, 7349, 7398, 7413] 18:33:22.580 [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 [] 18:33:22.580 [debug] QUERY OK source="settings" db=0.0ms 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 [] 18:33:22.580 [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 [] 18:33:22.581 [debug] QUERY OK source="media_profiles" db=0.1ms idle=6.7ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 18:33:22.583 [info] Sent 200 in 15ms 18:33:22.620 [info] GET /sources/10/edit 18:33:22.620 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "10"} Pipelines: [:browser] 18:33:22.620 [debug] QUERY OK source="sources" db=0.1ms idle=41.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 18:33:22.621 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=40.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" [] 18:33:22.621 [debug] QUERY OK source="settings" db=0.2ms 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 [] 18:33:22.622 [debug] QUERY OK source="settings" db=0.1ms idle=41.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:33:22.622 [debug] QUERY OK source="settings" db=0.1ms 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 [] 18:33:22.625 [info] Sent 200 in 5ms 18:33:22.983 [info] GET /sources/9/edit 18:33:22.983 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "9"} Pipelines: [:browser] 18:33:22.984 [debug] QUERY OK source="sources" db=0.2ms idle=363.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 18:33:22.984 [debug] QUERY OK source="media_profiles" db=0.2ms idle=363.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" [] 18:33:22.985 [debug] QUERY OK source="settings" db=0.1ms idle=363.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:33:22.985 [debug] QUERY OK source="settings" db=0.0ms idle=363.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:33:22.986 [debug] QUERY OK source="settings" db=0.1ms idle=363.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:33:22.987 [info] Sent 200 in 4ms 18:33:23.344 [info] GET /sources/8/edit 18:33:23.344 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "8"} Pipelines: [:browser] 18:33:23.345 [debug] QUERY OK source="sources" db=0.4ms idle=360.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 18:33:23.345 [debug] QUERY OK source="media_profiles" db=0.2ms idle=360.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" [] 18:33:23.346 [debug] QUERY OK source="settings" db=0.1ms idle=360.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:33:23.346 [debug] QUERY OK source="settings" db=0.1ms idle=360.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:33:23.347 [debug] QUERY OK source="settings" db=0.0ms idle=261.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:33:23.348 [info] Sent 200 in 4ms 18:33:23.524 [info] GET /sources/10 18:33:23.525 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "10"} Pipelines: [:browser] 18:33:23.525 [debug] QUERY OK source="sources" db=0.2ms idle=179.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 18:33:23.526 [debug] QUERY OK source="media_profiles" db=0.1ms idle=179.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:33:23.526 [debug] QUERY OK source="tasks" db=0.4ms idle=179.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 (?,?,?,?)) [10, "executing", "available", "scheduled", "retryable"] 18:33:23.526 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=180.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" = ?) [7410] 18:33:23.527 [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 [] 18:33:23.527 [debug] QUERY OK source="settings" db=0.2ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:33:23.528 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=2.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:33:23.530 [debug] QUERY OK source="sources" db=0.2ms idle=3.1ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 18:33:23.530 [debug] QUERY OK source="media_items" db=0.4ms idle=3.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [10] 18:33:23.532 [debug] QUERY OK source="media_items" db=1.5ms idle=3.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 ? [10, 10, 0] 18:33:23.533 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [10] 18:33:23.533 [debug] QUERY OK source="media_items" db=0.2ms idle=4.8ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [10] 18:33:23.534 [debug] QUERY OK source="media_items" db=1.0ms idle=3.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 ? [10, 10, 0] 18:33:23.535 [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" = ?) [10] 18:33:23.536 [debug] QUERY OK source="media_items" db=0.4ms idle=3.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [10] 18:33:23.537 [debug] QUERY OK source="media_items" db=0.9ms idle=3.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 ? [10, 10, 0] 18:33:23.538 [info] Sent 200 in 13ms 18:33:23.705 [info] GET /sources/9 18:33:23.706 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "9"} Pipelines: [:browser] 18:33:23.706 [debug] QUERY OK source="sources" db=0.3ms idle=172.5ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 18:33:23.707 [debug] QUERY OK source="media_profiles" db=0.1ms idle=171.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] 18:33:23.707 [debug] QUERY OK source="tasks" db=0.2ms idle=171.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 (?,?,?,?)) [9, "executing", "available", "scheduled", "retryable"] 18:33:23.707 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=170.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" = ?) [7409] 18:33:23.708 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=170.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:33:23.709 [debug] QUERY OK source="settings" db=0.2ms queue=0.1ms idle=2.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:33:23.709 [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 [] 18:33:23.710 [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" = ?) [9] 18:33:23.712 [debug] QUERY OK source="media_items" db=1.0ms idle=3.2ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds")))) [9] 18:33:23.713 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=3.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 ? [9, 10, 0] 18:33:23.714 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [9] 18:33:23.714 [debug] QUERY OK source="media_items" db=0.2ms idle=4.6ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [9] 18:33:23.715 [debug] QUERY OK source="media_items" db=0.4ms idle=3.8ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [9, 10, 0] 18:33:23.716 [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" = ?) [9] 18:33:23.716 [debug] QUERY OK source="media_items" db=0.3ms 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 ((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"))))) [9] 18:33:23.717 [debug] QUERY OK source="media_items" db=0.5ms idle=2.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 ? [9, 10, 0] 18:33:23.718 [info] Sent 200 in 12ms 18:33:23.886 [info] GET /sources/8 18:33:23.886 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "8"} Pipelines: [:browser] 18:33:23.887 [debug] QUERY OK source="sources" db=0.2ms idle=172.4ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [8] 18:33:23.887 [debug] QUERY OK source="media_profiles" db=0.0ms idle=172.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] 18:33:23.904 [debug] QUERY OK source="tasks" db=16.2ms idle=171.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 (?,?,?,?)) [8, "executing", "available", "scheduled", "retryable"] 18:33:23.904 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=187.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" = ?) [7408] 18:33:23.904 [debug] QUERY OK source="settings" db=0.1ms idle=187.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:33:23.905 [debug] QUERY OK source="settings" db=0.2ms 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 [] 18:33:23.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 [] 18:33:23.906 [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" = ?) [8] 18:33:23.907 [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")))) [8] 18:33:23.908 [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 ? [8, 10, 0] 18:33:23.909 [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" = ?) [8] 18:33:23.909 [debug] QUERY OK source="media_items" db=0.1ms idle=3.9ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [8] 18:33:23.910 [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 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [8, 10, 0] 18:33:23.911 [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" = ?) [8] 18:33:23.911 [debug] QUERY OK source="media_items" db=0.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 ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [8] 18:33:23.912 [debug] QUERY OK source="media_items" db=0.6ms 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 ? [8, 10, 0] 18:33:23.913 [info] Sent 200 in 26ms 18:33:24.289 [info] {"source":"oban","duration":1487,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:33:35.456 [info] GET /sources/3/media/26192/edit 18:33:35.456 [info] GET /sources/3/media/16412 18:33:35.456 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "26192", "source_id" => "3"} Pipelines: [:browser] 18:33:35.456 [info] GET /sources/4/media/28910/edit 18:33:35.456 [info] GET /sources/7/media/27933/edit 18:33:35.456 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "16412", "source_id" => "3"} Pipelines: [:browser] 18:33:35.456 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "28910", "source_id" => "4"} Pipelines: [:browser] 18:33:35.456 [info] GET /sources/3/media/23589 18:33:35.456 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "27933", "source_id" => "7"} Pipelines: [:browser] 18:33:35.456 [info] GET /sources/4/media/20897/edit 18:33:35.456 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "23589", "source_id" => "3"} Pipelines: [:browser] 18:33:35.456 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "20897", "source_id" => "4"} Pipelines: [:browser] 18:33:35.457 [debug] QUERY OK source="media_items" db=0.2ms idle=1564.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" = ?) [28910] 18:33:35.457 [debug] QUERY OK source="media_items" db=0.4ms queue=0.2ms idle=1563.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" = ?) [26192] 18:33:35.457 [debug] QUERY OK source="media_items" db=0.8ms idle=346.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [23589] 18:33:35.457 [debug] QUERY OK source="media_items" db=1.0ms idle=1347.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" = ?) [27933] 18:33:35.457 [debug] QUERY OK source="settings" db=0.2ms queue=0.4ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:33:35.457 [debug] QUERY OK source="media_items" db=0.9ms queue=0.1ms 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" = ?) [20897] 18:33:35.457 [debug] QUERY OK source="settings" db=0.7ms idle=0.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:33:35.458 [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" [23589] 18:33:35.458 [debug] QUERY OK source="media_items" db=1.3ms queue=0.1ms idle=1564.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" = ?) [16412] 18:33:35.458 [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 [] 18:33:35.458 [debug] QUERY OK source="settings" db=0.7ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:33:35.458 [debug] QUERY OK source="sources" db=0.9ms 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" = ?) [3] 18:33:35.458 [debug] QUERY OK source="settings" db=0.7ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:33:35.459 [debug] QUERY OK source="tasks" db=0.9ms idle=0.0ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [16412] 18:33:35.459 [debug] QUERY OK source="settings" db=1.5ms 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 [] 18:33:35.459 [debug] QUERY OK source="settings" db=0.8ms queue=0.6ms idle=0.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:33:35.459 [debug] QUERY OK source="sources" db=1.1ms queue=0.5ms idle=0.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 18:33:35.460 [debug] QUERY OK source="settings" db=0.8ms queue=0.2ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:33:35.460 [debug] QUERY OK source="settings" db=0.7ms idle=0.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:33:35.460 [debug] QUERY OK source="settings" db=0.9ms 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 [] 18:33:35.461 [debug] QUERY OK source="settings" db=0.7ms 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 [] 18:33:35.461 [debug] QUERY OK source="oban_jobs" db=1.0ms idle=0.0ms SELECT o0."id", o0."state", o0."queue", o0."worker", o0."args", o0."meta", o0."tags", o0."errors", o0."attempt", o0."attempted_by", o0."max_attempts", o0."priority", o0."attempted_at", o0."cancelled_at", o0."completed_at", o0."discarded_at", o0."inserted_at", o0."scheduled_at", o0."id" FROM "oban_jobs" AS o0 WHERE (o0."id" = ?) [6566] 18:33:35.461 [debug] QUERY OK source="settings" db=0.5ms queue=0.5ms 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 [] 18:33:35.461 [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 [] 18:33:35.461 [debug] QUERY OK source="settings" db=0.5ms 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 [] 18:33:35.461 [info] Sent 200 in 5ms 18:33:35.462 [info] Sent 200 in 6ms 18:33:35.462 [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 [] 18:33:35.462 [info] Sent 200 in 5ms 18:33:35.462 [debug] QUERY OK source="settings" db=0.5ms queue=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 [] 18:33:35.462 [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 [] 18:33:35.463 [info] Sent 200 in 7ms 18:33:35.463 [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 [] 18:33:35.463 [debug] QUERY OK source="media_profiles" db=0.3ms 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] 18:33:35.464 [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] 18:33:35.465 [info] Sent 200 in 8ms 18:33:35.465 [info] Sent 200 in 9ms 18:33:35.856 [info] GET /sources/4/media/22589/edit 18:33:35.856 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "22589", "source_id" => "4"} Pipelines: [:browser] 18:33:35.857 [debug] QUERY OK source="media_items" db=0.2ms idle=394.5ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [22589] 18:33:35.857 [debug] QUERY OK source="settings" db=0.0ms idle=394.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:33:35.858 [debug] QUERY OK source="settings" db=0.1ms idle=394.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:33:35.858 [debug] QUERY OK source="settings" db=0.1ms idle=394.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:33:35.859 [info] Sent 200 in 2ms 18:33:36.158 [info] GET /sources/4/media/22781/edit 18:33:36.158 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "22781", "source_id" => "4"} Pipelines: [:browser] 18:33:36.159 [debug] QUERY OK source="media_items" db=0.1ms idle=301.6ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [22781] 18:33:36.159 [debug] QUERY OK source="settings" db=0.0ms idle=301.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:33:36.160 [debug] QUERY OK source="settings" db=0.1ms idle=301.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:33:36.160 [debug] QUERY OK source="settings" db=0.1ms idle=301.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:33:36.161 [info] Sent 200 in 2ms 18:33:36.308 [info] GET /sources/2/media/19298/edit 18:33:36.309 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "19298", "source_id" => "2"} Pipelines: [:browser] 18:33:36.309 [debug] QUERY OK source="media_items" db=0.2ms idle=197.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" = ?) [19298] 18:33:36.309 [debug] QUERY OK source="settings" db=0.1ms idle=150.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:33:36.310 [debug] QUERY OK source="settings" db=0.1ms 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 [] 18:33:36.310 [debug] QUERY OK source="settings" db=0.1ms idle=150.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:33:36.311 [info] Sent 200 in 2ms 18:33:54.291 [info] {"source":"oban","duration":1010,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:34:00.820 [info] {"source":"oban","duration":386,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:34:24.293 [info] {"source":"oban","duration":1327,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:34:24.978 [info] GET /sources/7/media/20841/edit 18:34:24.978 [info] GET /sources/4/media/22780/edit 18:34:24.978 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "20841", "source_id" => "7"} Pipelines: [:browser] 18:34:24.978 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "22780", "source_id" => "4"} Pipelines: [:browser] 18:34:24.978 [info] GET /sources/7/media/19339/edit 18:34:24.978 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "19339", "source_id" => "7"} Pipelines: [:browser] 18:34:24.979 [debug] QUERY OK source="media_items" db=0.3ms idle=1086.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" = ?) [22780] 18:34:24.979 [debug] QUERY OK source="media_items" db=0.5ms idle=1086.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" = ?) [20841] 18:34:24.979 [debug] QUERY OK source="media_items" db=0.3ms idle=1086.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" = ?) [19339] 18:34:24.979 [debug] QUERY OK source="settings" db=0.1ms idle=770.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:24.979 [debug] QUERY OK source="settings" db=0.1ms idle=685.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:24.979 [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 [] 18:34:24.980 [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 [] 18:34:24.980 [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 [] 18:34:24.980 [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 [] 18:34:24.980 [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 [] 18:34:24.980 [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 [] 18:34:24.980 [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 [] 18:34:24.981 [info] Sent 200 in 3ms 18:34:24.981 [info] Sent 200 in 3ms 18:34:24.982 [info] Sent 200 in 3ms 18:34:25.060 [info] GET /sources/2/media/16829/edit 18:34:25.060 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "16829", "source_id" => "2"} Pipelines: [:browser] 18:34:25.060 [debug] QUERY OK source="media_items" db=0.2ms idle=80.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" = ?) [16829] 18:34:25.061 [debug] QUERY OK source="settings" db=0.0ms idle=80.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:25.061 [debug] QUERY OK source="settings" db=0.1ms 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 [] 18:34:25.062 [debug] QUERY OK source="settings" db=0.1ms idle=81.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:34:25.062 [info] Sent 200 in 2ms 18:34:25.214 [info] GET /sources/7/media/18771 18:34:25.217 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "18771", "source_id" => "7"} Pipelines: [:browser] 18:34:25.218 [debug] QUERY OK source="media_items" db=0.3ms queue=0.1ms idle=157.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" = ?) [18771] 18:34:25.219 [debug] QUERY OK source="tasks" db=0.3ms idle=157.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" [18771] 18:34:25.219 [debug] QUERY OK source="sources" db=0.6ms idle=157.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] 18:34:25.220 [debug] QUERY OK source="settings" db=0.4ms idle=158.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:25.221 [debug] QUERY OK source="settings" db=0.2ms 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 [] 18:34:25.221 [debug] QUERY OK source="settings" db=0.1ms idle=3.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:34:25.222 [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] 18:34:25.224 [info] Sent 200 in 9ms 18:34:25.361 [info] GET /sources/4/media/25573/edit 18:34:25.361 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "25573", "source_id" => "4"} Pipelines: [:browser] 18:34:25.362 [debug] QUERY OK source="media_items" db=0.2ms 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" = ?) [25573] 18:34:25.362 [debug] QUERY OK source="settings" db=0.1ms idle=141.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:34:25.362 [debug] QUERY OK source="settings" db=0.1ms idle=141.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:25.363 [debug] QUERY OK source="settings" db=0.1ms idle=141.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:25.364 [info] Sent 200 in 2ms 18:34:25.512 [info] GET /sources/3/media/22838 18:34:25.512 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "22838", "source_id" => "3"} Pipelines: [:browser] 18:34:25.513 [debug] QUERY OK source="media_items" db=0.1ms idle=290.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" = ?) [22838] 18:34:25.513 [debug] QUERY OK source="tasks" db=0.3ms idle=151.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" [22838] 18:34:25.513 [debug] QUERY OK source="sources" db=0.3ms idle=150.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 18:34:25.514 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=151.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" = ?) [6519] 18:34:25.514 [debug] QUERY OK source="settings" db=0.1ms idle=150.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:25.514 [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:34:25.515 [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 [] 18:34:25.516 [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] 18:34:25.517 [info] Sent 200 in 4ms 18:34:25.663 [info] GET /sources/7/media/25154/edit 18:34:25.663 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "25154", "source_id" => "7"} Pipelines: [:browser] 18:34:25.664 [debug] QUERY OK source="media_items" db=0.2ms idle=149.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" = ?) [25154] 18:34:25.664 [debug] QUERY OK source="settings" db=0.2ms idle=149.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:25.664 [debug] QUERY OK source="settings" db=0.0ms idle=150.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:25.665 [debug] QUERY OK source="settings" db=0.1ms idle=149.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:34:25.666 [info] Sent 200 in 2ms 18:34:25.815 [info] GET /sources/2/media/20614/edit 18:34:25.815 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "20614", "source_id" => "2"} Pipelines: [:browser] 18:34:25.816 [debug] QUERY OK source="media_items" db=0.3ms idle=299.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" = ?) [20614] 18:34:25.816 [debug] QUERY OK source="settings" db=0.2ms idle=152.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:25.816 [debug] QUERY OK source="settings" db=0.1ms idle=152.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:25.817 [debug] QUERY OK source="settings" db=0.1ms idle=152.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:34:25.818 [info] Sent 200 in 3ms 18:34:47.264 [info] GET /sources/4/media/26133/edit 18:34:47.264 [info] GET /sources/3/media/16412/edit 18:34:47.265 [info] GET /sources/3/media/23589/edit 18:34:47.265 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "26133", "source_id" => "4"} Pipelines: [:browser] 18:34:47.265 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "16412", "source_id" => "3"} Pipelines: [:browser] 18:34:47.265 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "23589", "source_id" => "3"} Pipelines: [:browser] 18:34:47.265 [debug] QUERY OK source="media_items" db=0.3ms idle=372.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" = ?) [26133] 18:34:47.265 [debug] QUERY OK source="media_items" db=0.2ms idle=373.0ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [23589] 18:34:47.266 [debug] QUERY OK source="media_items" db=0.7ms queue=0.1ms idle=372.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" = ?) [16412] 18:34:47.266 [debug] QUERY OK source="settings" db=0.2ms idle=6.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:34:47.266 [debug] QUERY OK source="settings" db=0.3ms idle=373.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:47.266 [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 [] 18:34:47.266 [debug] QUERY OK source="settings" db=0.2ms 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 [] 18:34:47.267 [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 [] 18:34:47.267 [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 [] 18:34:47.268 [debug] QUERY OK source="settings" db=0.1ms queue=0.1ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:34:47.268 [debug] QUERY OK source="settings" db=0.4ms idle=1.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:34:47.268 [debug] QUERY OK source="settings" db=0.7ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:34:47.269 [info] Sent 200 in 4ms 18:34:47.269 [info] Sent 200 in 4ms 18:34:47.270 [info] Sent 200 in 5ms 18:34:47.321 [info] GET /sources/7/media/26272 18:34:47.322 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "26272", "source_id" => "7"} Pipelines: [:browser] 18:34:47.322 [debug] QUERY OK source="media_items" db=0.1ms idle=55.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" = ?) [26272] 18:34:47.323 [debug] QUERY OK source="tasks" db=0.1ms idle=55.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" [26272] 18:34:47.323 [debug] QUERY OK source="sources" db=0.2ms idle=54.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 18:34:47.323 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=55.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" = ?) [7224] 18:34:47.323 [debug] QUERY OK source="settings" db=0.1ms idle=54.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:47.324 [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 [] 18:34:47.324 [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 [] 18:34:47.325 [debug] QUERY OK source="media_profiles" db=0.2ms 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] 18:34:47.327 [info] Sent 200 in 5ms 18:34:47.482 [info] GET /sources/4/media/27517 18:34:47.482 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "27517", "source_id" => "4"} Pipelines: [:browser] 18:34:47.483 [debug] QUERY OK source="media_items" db=0.2ms idle=159.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" = ?) [27517] 18:34:47.483 [debug] QUERY OK source="tasks" db=0.1ms idle=159.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" [27517] 18:34:47.483 [debug] QUERY OK source="sources" db=0.2ms idle=159.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] 18:34:47.484 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=159.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" = ?) [7289] 18:34:47.484 [debug] QUERY OK source="settings" db=0.1ms idle=158.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:47.484 [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 [] 18:34:47.485 [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 [] 18:34:47.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] 18:34:47.487 [info] Sent 200 in 4ms 18:34:47.625 [info] GET /sources/3/media/27576/edit 18:34:47.626 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "27576", "source_id" => "3"} Pipelines: [:browser] 18:34:47.626 [debug] QUERY OK source="media_items" db=0.2ms idle=142.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" = ?) [27576] 18:34:47.627 [debug] QUERY OK source="settings" db=0.1ms idle=142.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:47.627 [debug] QUERY OK source="settings" db=0.0ms idle=142.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:47.627 [debug] QUERY OK source="settings" db=0.1ms idle=142.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:47.628 [info] Sent 200 in 2ms 18:34:47.776 [info] GET /sources/7/media/18771/edit 18:34:47.777 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "18771", "source_id" => "7"} Pipelines: [:browser] 18:34:47.777 [debug] QUERY OK source="media_items" db=0.2ms idle=291.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" = ?) [18771] 18:34:47.778 [debug] QUERY OK source="settings" db=0.1ms idle=151.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:34:47.778 [debug] QUERY OK source="settings" db=0.1ms idle=151.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:34:47.778 [debug] QUERY OK source="settings" db=0.1ms idle=151.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:34:47.779 [info] Sent 200 in 3ms 18:34:47.926 [info] GET /sources/4/media/21462 18:34:47.926 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "21462", "source_id" => "4"} Pipelines: [:browser] 18:34:47.927 [debug] QUERY OK source="media_items" db=0.3ms idle=299.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21462] 18:34:47.928 [debug] QUERY OK source="tasks" db=0.2ms idle=150.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" [21462] 18:34:47.928 [debug] QUERY OK source="sources" db=0.2ms idle=149.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 18:34:47.928 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=149.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 (?,?)) [6428, 7164] 18:34:47.929 [debug] QUERY OK source="settings" db=0.0ms idle=149.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:34:47.929 [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:34:47.929 [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 [] 18:34:47.930 [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] 18:34:47.931 [info] Sent 200 in 4ms 18:34:48.228 [info] GET /sources/3/media/22838/edit 18:34:48.228 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "22838", "source_id" => "3"} Pipelines: [:browser] 18:34:48.229 [debug] QUERY OK source="media_items" db=0.2ms idle=300.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" = ?) [22838] 18:34:48.230 [debug] QUERY OK source="settings" db=0.2ms 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 [] 18:34:48.230 [debug] QUERY OK source="settings" db=0.1ms 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 [] 18:34:48.230 [debug] QUERY OK source="settings" db=0.1ms 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 [] 18:34:48.231 [info] Sent 200 in 2ms 18:34:54.295 [info] {"source":"oban","duration":1664,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:34:57.878 [info] GET /sources/3/media/26192 18:34:57.878 [info] GET /sources/3/media/18312/edit 18:34:57.878 [info] GET /sources/3/media/21895/edit 18:34:57.879 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "26192", "source_id" => "3"} Pipelines: [:browser] 18:34:57.879 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "21895", "source_id" => "3"} Pipelines: [:browser] 18:34:57.879 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "18312", "source_id" => "3"} Pipelines: [:browser] 18:34:57.879 [debug] QUERY OK source="media_items" db=0.5ms idle=1986.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" = ?) [21895] 18:34:57.879 [debug] QUERY OK source="media_items" db=0.7ms idle=1986.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" = ?) [26192] 18:34:57.879 [debug] QUERY OK source="media_items" db=0.6ms idle=1986.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" = ?) [18312] 18:34:57.880 [debug] QUERY OK source="settings" db=0.2ms idle=1602.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:57.880 [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 [] 18:34:57.880 [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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 18:34:57.880 [debug] QUERY OK source="tasks" db=0.6ms idle=600.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" [26192] 18:34:57.880 [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 [] 18:34:57.880 [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 [] 18:34:57.881 [debug] QUERY OK source="oban_jobs" db=0.2ms 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" = ?) [7221] 18:34:57.881 [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 [] 18:34:57.882 [debug] QUERY OK source="settings" db=0.8ms 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 [] 18:34:57.882 [debug] QUERY OK source="settings" db=0.3ms queue=0.5ms idle=1.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:34:57.883 [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 [] 18:34:57.883 [info] Sent 200 in 4ms 18:34:57.883 [info] Sent 200 in 4ms 18:34:57.883 [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 [] 18:34:57.884 [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] 18:34:57.886 [info] Sent 200 in 7ms 18:34:57.968 [info] GET /sources/4/media/20897 18:34:57.968 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "20897", "source_id" => "4"} Pipelines: [:browser] 18:34:57.968 [debug] QUERY OK source="media_items" db=0.1ms idle=86.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" = ?) [20897] 18:34:57.969 [debug] QUERY OK source="tasks" db=0.1ms idle=86.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" [20897] 18:34:57.969 [debug] QUERY OK source="sources" db=0.2ms idle=85.8ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 18:34:57.969 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=85.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 (?,?,?)) [6392, 6548, 7320] 18:34:57.970 [debug] QUERY OK source="settings" db=0.1ms 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 [] 18:34:57.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 [] 18:34:57.971 [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 [] 18:34:57.971 [debug] QUERY OK source="media_profiles" db=0.2ms queue=0.1ms idle=2.1ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 18:34:57.973 [info] Sent 200 in 5ms 18:34:58.119 [info] GET /sources/3/media/16982/edit 18:34:58.119 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "16982", "source_id" => "3"} Pipelines: [:browser] 18:34:58.120 [debug] QUERY OK source="media_items" db=0.2ms idle=150.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" = ?) [16982] 18:34:58.120 [debug] QUERY OK source="settings" db=0.1ms 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 [] 18:34:58.121 [debug] QUERY OK source="settings" db=0.0ms idle=150.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:34:58.121 [debug] QUERY OK source="settings" db=0.1ms idle=150.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:34:58.122 [info] Sent 200 in 2ms 18:34:58.270 [info] GET /sources/4/media/19960/edit 18:34:58.270 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "19960", "source_id" => "4"} Pipelines: [:browser] 18:34:58.271 [debug] QUERY OK source="media_items" db=0.2ms idle=299.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" = ?) [19960] 18:34:58.271 [debug] QUERY OK source="settings" db=0.1ms idle=151.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:34:58.272 [debug] QUERY OK source="settings" db=0.0ms idle=150.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:58.272 [debug] QUERY OK source="settings" db=0.1ms idle=151.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:34:58.273 [info] Sent 200 in 2ms 18:34:58.421 [info] GET /sources/7/media/21785/edit 18:34:58.421 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "21785", "source_id" => "7"} Pipelines: [:browser] 18:34:58.421 [debug] QUERY OK source="media_items" db=0.2ms idle=150.3ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [21785] 18:34:58.422 [debug] QUERY OK source="settings" db=0.1ms idle=150.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:34:58.422 [debug] QUERY OK source="settings" db=0.1ms idle=150.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:58.423 [debug] QUERY OK source="settings" db=0.1ms idle=150.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:58.424 [info] Sent 200 in 3ms 18:34:58.570 [info] GET /sources/4/media/25850/edit 18:34:58.570 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "25850", "source_id" => "4"} Pipelines: [:browser] 18:34:58.571 [debug] QUERY OK source="media_items" db=0.2ms idle=289.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" = ?) [25850] 18:34:58.571 [debug] QUERY OK source="settings" db=0.1ms idle=149.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:58.572 [debug] QUERY OK source="settings" db=0.0ms idle=149.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:34:58.572 [debug] QUERY OK source="settings" db=0.1ms idle=149.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:34:58.573 [info] Sent 200 in 3ms 18:34:58.722 [info] GET /sources/2/media/21936/edit 18:34:58.722 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "21936", "source_id" => "2"} Pipelines: [:browser] 18:34:58.723 [debug] QUERY OK source="media_items" db=0.2ms 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" = ?) [21936] 18:34:58.723 [debug] QUERY OK source="settings" db=0.1ms idle=152.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:58.724 [debug] QUERY OK source="settings" db=0.1ms idle=152.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:58.724 [debug] QUERY OK source="settings" db=0.1ms idle=152.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:34:58.725 [info] Sent 200 in 2ms 18:35:00.822 [info] {"source":"oban","duration":546,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:35:24.297 [info] {"source":"oban","duration":1354,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:35:54.299 [info] {"source":"oban","duration":950,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:35:56.579 [info] GET /sources/7/media/27933/force_download 18:35:56.579 [info] GET /sources/3/media/27576/force_download 18:35:56.580 [info] GET /sources/4/media/28076/force_download 18:35:56.580 [info] GET /sources/4/media/28910/force_download 18:35:56.580 [info] GET /sources/7/media/28489/force_download 18:35:56.580 [debug] QUERY OK source="settings" db=0.3ms idle=687.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:35:56.580 [debug] QUERY OK source="settings" db=0.2ms queue=0.3ms idle=687.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:35:56.580 [debug] QUERY OK source="settings" db=0.2ms idle=687.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:35:56.581 [debug] QUERY OK source="settings" db=0.2ms idle=179.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:35:56.581 [debug] QUERY OK source="settings" db=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 [] 18:35:56.581 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 18:35:56.581 [debug] QUERY OK source="settings" db=0.5ms idle=688.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:35:56.581 [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 [] 18:35:56.581 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 18:35:56.581 [debug] QUERY OK source="settings" db=0.5ms 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 [] 18:35:56.581 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 18:35:56.581 [debug] QUERY OK source="settings" db=0.8ms 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 [] 18:35:56.581 [debug] QUERY OK source="settings" db=0.3ms idle=0.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:35:56.582 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 18:35:56.582 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 18:35:56.581 [error] #PID<0.218607.0> running PinchflatWeb.Endpoint (connection #PID<0.218606.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /sources/3/media/27576/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/27576/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218606.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/27576/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52884}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218607.0>, params: %{}, path_info: ["sources", "3", "media", "27576", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "216.73.216.33"} ], request_path: "/sources/3/media/27576/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQ6ku6rukN37zoAGuyC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218606.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/27576/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52884}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/3/media/27576/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218606.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/media/27576/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52884}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218607.0>, params: %{}, path_info: ["sources", "3", "media", "27576", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-rea (truncated) 18:35:56.582 [error] #PID<0.218609.0> running PinchflatWeb.Endpoint (connection #PID<0.218603.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /sources/4/media/28076/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/28076/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218603.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/28076/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52882}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218609.0>, params: %{}, path_info: ["sources", "4", "media", "28076", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "216.73.216.33"} ], request_path: "/sources/4/media/28076/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQ6ku6y9zvSerQAGuzC"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218603.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/28076/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52882}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/4/media/28076/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218603.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/28076/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52882}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218609.0>, params: %{}, path_info: ["sources", "4", "media", "28076", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-rea (truncated) 18:35:56.581 [error] #PID<0.218612.0> running PinchflatWeb.Endpoint (connection #PID<0.218610.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /sources/7/media/28489/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/28489/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218610.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/28489/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52894}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218612.0>, params: %{}, path_info: ["sources", "7", "media", "28489", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "216.73.216.33"} ], request_path: "/sources/7/media/28489/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQ6ku62L3OkgkAALSdB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218610.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/28489/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52894}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/28489/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218610.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/28489/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52894}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218612.0>, params: %{}, path_info: ["sources", "7", "media", "28489", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-rea (truncated) 18:35:56.583 [error] #PID<0.218611.0> running PinchflatWeb.Endpoint (connection #PID<0.218605.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /sources/4/media/28910/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/28910/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218605.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/28910/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52892}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218611.0>, params: %{}, path_info: ["sources", "4", "media", "28910", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "216.73.216.33"} ], request_path: "/sources/4/media/28910/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQ6ku61uYVOTlMADSZD"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218605.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/28910/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52892}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/4/media/28910/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218605.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/28910/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52892}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218611.0>, params: %{}, path_info: ["sources", "4", "media", "28910", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-rea (truncated) 18:35:56.583 [error] #PID<0.218608.0> running PinchflatWeb.Endpoint (connection #PID<0.218604.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /sources/7/media/27933/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/27933/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218604.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/27933/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52888}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218608.0>, params: %{}, path_info: ["sources", "7", "media", "27933", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "216.73.216.33"} ], request_path: "/sources/7/media/27933/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQ6ku6rhh0f_nAALScB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218604.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/27933/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52888}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/27933/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218604.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/27933/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52888}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218608.0>, params: %{}, path_info: ["sources", "7", "media", "27933", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-rea (truncated) 18:35:56.662 [info] GET /sources/2/media/27892/force_download 18:35:56.663 [debug] QUERY OK source="settings" db=0.2ms idle=81.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:35:56.663 [debug] QUERY OK source="settings" db=0.0ms idle=81.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:35:56.663 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 18:35:56.664 [error] #PID<0.218614.0> running PinchflatWeb.Endpoint (connection #PID<0.218613.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /sources/2/media/27892/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/2/media/27892/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218613.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/27892/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52898}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218614.0>, params: %{}, path_info: ["sources", "2", "media", "27892", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "216.73.216.33"} ], request_path: "/sources/2/media/27892/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQ6kvOcGkM2CtYALSeB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218613.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/27892/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52898}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/media/27892/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218613.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/media/27892/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52898}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218614.0>, params: %{}, path_info: ["sources", "2", "media", "27892", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-rea (truncated) 18:35:56.821 [info] GET /sources/4/media/25020/edit 18:35:56.821 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "25020", "source_id" => "4"} Pipelines: [:browser] 18:35:56.822 [debug] QUERY OK source="media_items" db=0.2ms idle=240.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" = ?) [25020] 18:35:56.822 [debug] QUERY OK source="settings" db=0.1ms idle=240.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:35:56.822 [debug] QUERY OK source="settings" db=0.2ms idle=240.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:35:56.823 [debug] QUERY OK source="settings" db=0.3ms idle=160.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:35:56.824 [info] Sent 200 in 3ms 18:35:56.972 [info] GET /sources/4/media/25020 18:35:56.973 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "25020", "source_id" => "4"} Pipelines: [:browser] 18:35:56.973 [debug] QUERY OK source="media_items" db=0.2ms idle=309.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" = ?) [25020] 18:35:56.974 [debug] QUERY OK source="tasks" db=0.2ms idle=151.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" [25020] 18:35:56.974 [debug] QUERY OK source="sources" db=0.2ms idle=151.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] 18:35:56.974 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=151.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" = ?) [7148] 18:35:56.975 [debug] QUERY OK source="settings" db=0.2ms idle=151.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:35:56.975 [debug] QUERY OK source="settings" db=0.2ms idle=1.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:35:56.976 [debug] QUERY OK source="settings" db=0.2ms idle=2.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:35:56.977 [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] 18:35:56.978 [info] Sent 200 in 5ms 18:35:57.122 [info] GET /sources/4/media/26132/edit 18:35:57.122 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.edit/2 Parameters: %{"id" => "26132", "source_id" => "4"} Pipelines: [:browser] 18:35:57.123 [debug] QUERY OK source="media_items" db=0.2ms idle=148.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" = ?) [26132] 18:35:57.123 [debug] QUERY OK source="settings" db=0.1ms idle=148.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:35:57.124 [debug] QUERY OK source="settings" db=0.0ms idle=148.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:35:57.124 [debug] QUERY OK source="settings" db=0.2ms idle=147.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:35:57.125 [info] Sent 200 in 3ms 18:36:00.824 [info] {"source":"oban","duration":483,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:36:05.712 [info] GET /media/5336ef72-c49e-4618-81ff-133649b3258b/stream 18:36:05.712 [info] GET /media/ed6aab91-1232-4fcb-8fa7-27d09a88039a/stream 18:36:05.712 [info] GET /media/595c0532-98c0-4e0c-a53d-0fda911cba10/stream 18:36:05.712 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "5336ef72-c49e-4618-81ff-133649b3258b"} Pipelines: [:maybe_basic_auth] 18:36:05.712 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "ed6aab91-1232-4fcb-8fa7-27d09a88039a"} Pipelines: [:maybe_basic_auth] 18:36:05.712 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "595c0532-98c0-4e0c-a53d-0fda911cba10"} Pipelines: [:maybe_basic_auth] 18:36:05.713 [debug] QUERY OK source="media_items" db=0.5ms idle=820.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" = ?) ["5336ef72-c49e-4618-81ff-133649b3258b"] 18:36:05.713 [debug] QUERY OK source="media_items" db=0.7ms idle=820.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" = ?) ["595c0532-98c0-4e0c-a53d-0fda911cba10"] 18:36:05.713 [debug] QUERY OK source="media_items" db=0.7ms idle=1294.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" = ?) ["ed6aab91-1232-4fcb-8fa7-27d09a88039a"] 18:36:05.713 [debug] Invalid range request for media item: 5336ef72-c49e-4618-81ff-133649b3258b - serving full file 18:36:05.713 [debug] Invalid range request for media item: 595c0532-98c0-4e0c-a53d-0fda911cba10 - serving full file 18:36:05.713 [info] Sent 200 in 1ms 18:36:05.713 [info] Sent 200 in 1ms 18:36:05.714 [debug] Invalid range request for media item: ed6aab91-1232-4fcb-8fa7-27d09a88039a - serving full file 18:36:05.714 [info] Sent 200 in 1ms 18:36:05.801 [info] GET /media/261a9b8a-52dd-441b-8f20-1e6566a5c307/stream 18:36:05.801 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "261a9b8a-52dd-441b-8f20-1e6566a5c307"} Pipelines: [:maybe_basic_auth] 18:36:05.801 [debug] QUERY OK source="media_items" db=0.2ms idle=909.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" = ?) ["261a9b8a-52dd-441b-8f20-1e6566a5c307"] 18:36:05.802 [debug] Invalid range request for media item: 261a9b8a-52dd-441b-8f20-1e6566a5c307 - serving full file 18:36:05.802 [info] Sent 200 in 968µs 18:36:05.952 [info] GET /media/22ef4200-1ba7-4cd0-aecd-232cbeae34ba/stream 18:36:05.952 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.stream/2 Parameters: %{"uuid" => "22ef4200-1ba7-4cd0-aecd-232cbeae34ba"} Pipelines: [:maybe_basic_auth] 18:36:05.952 [debug] QUERY OK source="media_items" db=0.2ms idle=531.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" = ?) ["22ef4200-1ba7-4cd0-aecd-232cbeae34ba"] 18:36:05.953 [debug] Invalid range request for media item: 22ef4200-1ba7-4cd0-aecd-232cbeae34ba - serving full file 18:36:05.953 [info] Sent 200 in 1ms 18:36:06.103 [info] GET /sources/4/media/26132/force_download 18:36:06.104 [debug] QUERY OK source="settings" db=0.2ms idle=390.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:06.104 [debug] QUERY OK source="settings" db=0.1ms idle=390.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:36:06.104 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 18:36:06.105 [error] #PID<0.218635.0> running PinchflatWeb.Endpoint (connection #PID<0.218634.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /sources/4/media/26132/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/26132/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218634.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/26132/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52936}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218635.0>, params: %{}, path_info: ["sources", "4", "media", "26132", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "216.73.216.33"} ], request_path: "/sources/4/media/26132/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQ6lSZUEKsNR0oALSkB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218634.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/26132/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52936}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/4/media/26132/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218634.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/26132/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52936}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218635.0>, params: %{}, path_info: ["sources", "4", "media", "26132", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-rea (truncated) 18:36:06.709 [info] GET /sources/7/media/29046/force_download 18:36:06.709 [debug] QUERY OK source="settings" db=0.1ms idle=907.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:06.710 [debug] QUERY OK source="settings" db=0.1ms queue=0.3ms idle=757.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:06.710 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 18:36:06.711 [error] #PID<0.218637.0> running PinchflatWeb.Endpoint (connection #PID<0.218636.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /sources/7/media/29046/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/29046/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218636.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/29046/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52940}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218637.0>, params: %{}, path_info: ["sources", "7", "media", "29046", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "216.73.216.33"} ], request_path: "/sources/7/media/29046/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQ6lUpuckgP1IIALSlB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218636.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/29046/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52940}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/7/media/29046/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218636.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/media/29046/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52940}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218637.0>, params: %{}, path_info: ["sources", "7", "media", "29046", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-rea (truncated) 18:36:07.313 [info] GET /sources/4/media/25851/force_download 18:36:07.314 [debug] QUERY OK source="settings" db=0.1ms idle=1209.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:07.314 [debug] QUERY OK source="settings" db=0.1ms idle=1209.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:07.314 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 18:36:07.314 [error] #PID<0.218639.0> running PinchflatWeb.Endpoint (connection #PID<0.218638.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /sources/4/media/25851/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/25851/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218638.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/25851/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52944}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218639.0>, params: %{}, path_info: ["sources", "4", "media", "25851", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "216.73.216.33"} ], request_path: "/sources/4/media/25851/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQ6lW5uyjFORlIALSmB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218638.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/25851/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52944}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/4/media/25851/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218638.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/25851/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52944}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218639.0>, params: %{}, path_info: ["sources", "4", "media", "25851", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-rea (truncated) 18:36:08.219 [info] GET /sources/4/media/26133/force_download 18:36:08.219 [debug] QUERY OK source="settings" db=0.1ms idle=905.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:08.220 [debug] QUERY OK source="settings" db=0.0ms idle=905.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:08.220 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 18:36:08.220 [error] #PID<0.218641.0> running PinchflatWeb.Endpoint (connection #PID<0.218640.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /sources/4/media/26133/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/26133/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218640.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/26133/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52948}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218641.0>, params: %{}, path_info: ["sources", "4", "media", "26133", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "216.73.216.33"} ], request_path: "/sources/4/media/26133/force_download", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQ6laRucl9Zns8AAAjE"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218640.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/26133/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52948}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/4/media/26133/force_download (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218640.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/media/26133/force_download", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 52948}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218641.0>, params: %{}, path_info: ["sources", "4", "media", "26133", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-rea (truncated) 18:36:11.487 [info] GET /sources/4/media/26133 18:36:11.487 [info] GET /sources/4/media/25851 18:36:11.487 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "25851", "prevent_download" => "true", "source_id" => "4"} Pipelines: [:browser] 18:36:11.487 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "26133", "prevent_download" => "true", "source_id" => "4"} Pipelines: [:browser] 18:36:11.488 [info] GET /sources/3/media/27576 18:36:11.488 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "27576", "prevent_download" => "true", "source_id" => "3"} Pipelines: [:browser] 18:36:11.488 [debug] QUERY OK source="media_items" db=0.3ms idle=1595.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" = ?) [25851] 18:36:11.488 [debug] QUERY OK source="media_items" db=0.5ms idle=1595.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" = ?) [26133] 18:36:11.488 [debug] QUERY OK source="tasks" db=0.4ms idle=1059.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" [25851] 18:36:11.489 [debug] QUERY OK source="media_items" db=0.6ms idle=1595.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" = ?) [27576] 18:36:11.489 [debug] QUERY OK source="sources" db=0.5ms 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", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 18:36:11.489 [debug] QUERY OK source="tasks" db=0.5ms 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" [26133] 18:36:11.489 [debug] QUERY OK source="sources" db=0.6ms 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] 18:36:11.489 [debug] QUERY OK source="tasks" db=0.2ms 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" [27576] 18:36:11.489 [debug] QUERY OK source="oban_jobs" db=0.3ms idle=0.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" = ?) [7197] 18:36:11.489 [debug] QUERY OK source="sources" db=0.4ms idle=0.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 18:36:11.489 [debug] QUERY OK source="oban_jobs" db=0.3ms 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" = ?) [7215] 18:36:11.490 [debug] QUERY OK source="oban_jobs" db=0.3ms 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" = ?) [7295] 18:36:11.490 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=0.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:36:11.491 [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 [] 18:36:11.491 [debug] QUERY OK source="settings" db=0.4ms 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 [] 18:36:11.491 [debug] QUERY OK source="settings" db=0.6ms 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 [] 18:36:11.491 [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 [] 18:36:11.492 [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 [] 18:36:11.492 [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 [] 18:36:11.492 [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 [] 18:36:11.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 [] 18:36:11.493 [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] 18:36:11.493 [debug] QUERY OK source="media_profiles" db=0.6ms 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] 18:36:11.494 [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] 18:36:11.494 [info] Sent 200 in 7ms 18:36:11.494 [info] Sent 200 in 7ms 18:36:11.495 [info] Sent 200 in 7ms 18:36:11.582 [info] GET /sources/7/media/29046 18:36:11.582 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "29046", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 18:36:11.582 [debug] QUERY OK source="media_items" db=0.2ms idle=89.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" = ?) [29046] 18:36:11.583 [debug] QUERY OK source="tasks" db=0.1ms idle=89.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" [29046] 18:36:11.583 [debug] QUERY OK source="sources" db=0.2ms idle=89.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] 18:36:11.583 [debug] QUERY OK source="oban_jobs" db=0.2ms idle=89.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" = ?) [7405] 18:36:11.583 [debug] QUERY OK source="settings" db=0.1ms idle=89.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:11.584 [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 [] 18:36:11.584 [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 [] 18:36:11.585 [debug] QUERY OK source="media_profiles" db=0.2ms idle=2.4ms SELECT m0."id", m0."name", m0."redownload_delay_days", m0."output_path_template", m0."download_subs", m0."download_auto_subs", m0."embed_subs", m0."sub_langs", m0."download_thumbnail", m0."embed_thumbnail", m0."download_source_images", m0."download_metadata", m0."embed_metadata", m0."download_nfo", m0."sponsorblock_behaviour", m0."sponsorblock_categories", m0."shorts_behaviour", m0."livestream_behaviour", m0."audio_track", m0."preferred_resolution", m0."media_container", m0."marked_for_deletion_at", m0."inserted_at", m0."updated_at", m0."id" FROM "media_profiles" AS m0 WHERE (m0."id" = ?) [1] 18:36:11.587 [info] Sent 200 in 5ms 18:36:11.734 [info] GET /sources/7/media/27933 18:36:11.735 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "27933", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 18:36:11.735 [debug] QUERY OK source="media_items" db=0.2ms idle=151.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" = ?) [27933] 18:36:11.735 [debug] QUERY OK source="tasks" db=0.2ms idle=151.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" [27933] 18:36:11.736 [debug] QUERY OK source="sources" db=0.2ms idle=151.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] 18:36:11.736 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=151.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" = ?) [7312] 18:36:11.736 [debug] QUERY OK source="settings" db=0.1ms idle=150.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:11.736 [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 [] 18:36:11.737 [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 [] 18:36:11.738 [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] 18:36:11.739 [info] Sent 200 in 5ms 18:36:11.884 [info] GET /sources/4/media/28910 18:36:11.884 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "28910", "prevent_download" => "true", "source_id" => "4"} Pipelines: [:browser] 18:36:11.885 [debug] QUERY OK source="media_items" db=0.2ms queue=0.1ms idle=148.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" = ?) [28910] 18:36:11.885 [debug] QUERY OK source="tasks" db=0.1ms idle=148.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [28910] 18:36:11.885 [debug] QUERY OK source="sources" db=0.2ms idle=148.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 18:36:11.886 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=148.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" = ?) [7397] 18:36:11.886 [debug] QUERY OK source="settings" db=0.1ms idle=148.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:11.887 [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 [] 18:36:11.887 [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 [] 18:36:11.888 [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] 18:36:11.889 [info] Sent 200 in 5ms 18:36:12.185 [info] GET /sources/7/media/28489 18:36:12.186 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "28489", "prevent_download" => "true", "source_id" => "7"} Pipelines: [:browser] 18:36:12.186 [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" = ?) [28489] 18:36:12.187 [debug] QUERY OK source="tasks" db=0.2ms idle=299.9ms SELECT t0."id", t0."job_id", t0."source_id", t0."media_item_id", t0."inserted_at", t0."updated_at", t0."media_item_id" FROM "tasks" AS t0 WHERE (t0."media_item_id" = ?) ORDER BY t0."media_item_id" [28489] 18:36:12.187 [debug] QUERY OK source="sources" db=0.3ms idle=299.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [7] 18:36:12.187 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=299.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" = ?) [7342] 18:36:12.188 [debug] QUERY OK source="settings" db=0.1ms idle=299.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:12.188 [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 [] 18:36:12.188 [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 [] 18:36:12.189 [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] 18:36:12.190 [info] Sent 200 in 5ms 18:36:12.486 [info] GET /sources/4/media/28076 18:36:12.486 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "28076", "prevent_download" => "true", "source_id" => "4"} Pipelines: [:browser] 18:36:12.487 [debug] QUERY OK source="media_items" db=0.1ms idle=298.9ms SELECT m0."id", m0."uuid", m0."title", m0."media_id", m0."description", m0."original_url", m0."livestream", m0."short_form_content", m0."media_downloaded_at", m0."media_redownloaded_at", m0."uploaded_at", m0."upload_date_index", m0."duration_seconds", m0."playlist_index", m0."predicted_media_filepath", m0."media_filepath", m0."media_size_bytes", m0."thumbnail_filepath", m0."metadata_filepath", m0."nfo_filepath", m0."subtitle_filepaths", m0."last_error", m0."prevent_download", m0."prevent_culling", m0."culled_at", m0."source_id", m0."inserted_at", m0."updated_at" FROM "media_items" AS m0 WHERE (m0."id" = ?) [28076] 18:36:12.487 [debug] QUERY OK source="tasks" db=0.1ms idle=299.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" [28076] 18:36:12.487 [debug] QUERY OK source="sources" db=0.1ms idle=298.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", 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] 18:36:12.488 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=298.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" = ?) [7319] 18:36:12.488 [debug] QUERY OK source="settings" db=0.1ms idle=55.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:12.488 [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 [] 18:36:12.489 [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 [] 18:36:12.490 [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] 18:36:12.491 [info] Sent 200 in 4ms 18:36:12.638 [info] GET /sources/2/media/27892 18:36:12.639 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "27892", "prevent_download" => "true", "source_id" => "2"} Pipelines: [:browser] 18:36:12.639 [debug] QUERY OK source="media_items" db=0.3ms idle=151.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" = ?) [27892] 18:36:12.640 [debug] QUERY OK source="tasks" db=0.2ms idle=151.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" [27892] 18:36:12.640 [debug] QUERY OK source="sources" db=0.2ms idle=151.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" = ?) [2] 18:36:12.640 [debug] QUERY OK source="oban_jobs" db=0.1ms idle=151.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 (?,?)) [7310, 7337] 18:36:12.641 [debug] QUERY OK source="settings" db=0.0ms idle=151.0ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:36:12.641 [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 [] 18:36:12.641 [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 [] 18:36:12.642 [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] 18:36:12.644 [info] Sent 200 in 5ms 18:36:17.869 [info] GET /sources/2 18:36:17.869 [info] GET /sources/4/media/26132 18:36:17.869 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "2"} Pipelines: [:browser] 18:36:17.869 [debug] Processing with PinchflatWeb.MediaItems.MediaItemController.show/2 Parameters: %{"id" => "26132", "prevent_download" => "true", "source_id" => "4"} Pipelines: [:browser] 18:36:17.869 [info] GET /sources/5 18:36:17.870 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "5"} Pipelines: [:browser] 18:36:17.870 [debug] QUERY OK source="sources" db=0.5ms idle=1977.6ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 18:36:17.870 [debug] QUERY OK source="media_items" db=0.4ms idle=1977.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" = ?) [26132] 18:36:17.870 [debug] QUERY OK source="sources" db=0.4ms idle=1977.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 18:36:17.871 [debug] QUERY OK source="media_profiles" db=0.3ms idle=1429.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:36:17.871 [debug] QUERY OK source="tasks" db=0.4ms idle=427.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" [26132] 18:36:17.871 [debug] QUERY OK source="sources" db=0.4ms idle=0.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at", s0."id" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 18:36:17.871 [debug] QUERY OK source="media_profiles" db=0.5ms 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] 18:36:17.871 [debug] QUERY OK source="tasks" db=0.4ms idle=0.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 (?,?,?,?)) [2, "executing", "available", "scheduled", "retryable"] 18:36:17.871 [debug] QUERY OK source="oban_jobs" db=0.2ms 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" = ?) [7214] 18:36:17.871 [debug] QUERY OK source="oban_jobs" db=0.2ms 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" = ?) [7420] 18:36:17.872 [debug] QUERY OK source="tasks" db=0.5ms idle=0.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"] 18:36:17.872 [debug] QUERY OK source="settings" db=0.7ms 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 [] 18:36:17.873 [debug] QUERY OK source="settings" db=0.7ms idle=0.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:36:17.873 [debug] QUERY OK source="oban_jobs" db=0.2ms queue=0.2ms 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" = ?) [7411] 18:36:17.873 [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 [] 18:36:17.873 [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 [] 18:36:17.874 [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 [] 18:36:17.874 [debug] QUERY OK source="settings" db=0.3ms queue=0.1ms idle=1.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:36:17.874 [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 [] 18:36:17.874 [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 [] 18:36:17.875 [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] 18:36:17.875 [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 [] 18:36:17.876 [debug] QUERY OK source="sources" db=0.4ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 18:36:17.876 [info] Sent 200 in 6ms 18:36:17.876 [debug] QUERY OK source="sources" db=0.3ms 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] 18:36:17.877 [debug] QUERY OK source="media_items" db=0.5ms queue=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")))) [2] 18:36:17.879 [debug] QUERY OK source="media_items" db=2.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")))) [5] 18:36:17.879 [debug] QUERY OK source="media_items" db=2.3ms queue=0.1ms 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 ? [2, 10, 0] 18:36:17.880 [debug] QUERY OK source="sources" db=0.3ms idle=3.0ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 18:36:17.880 [info] GET /sources/3 18:36:17.880 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "3"} Pipelines: [:browser] 18:36:17.881 [info] GET /media_profiles 18:36:17.880 [info] GET /sources/4 18:36:17.881 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.index/2 Parameters: %{} Pipelines: [:browser] 18:36:17.881 [debug] Processing with PinchflatWeb.Sources.SourceController.show/2 Parameters: %{"id" => "4"} Pipelines: [:browser] 18:36:17.881 [debug] QUERY OK source="media_items" db=0.7ms idle=3.4ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [2] 18:36:17.882 [debug] QUERY OK source="media_items" db=3.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 ? [5, 10, 0] 18:36:17.882 [debug] QUERY OK source="sources" db=1.3ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 18:36:17.882 [debug] QUERY OK source="media_profiles" db=1.4ms queue=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", (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" [] 18:36:17.883 [debug] QUERY OK source="sources" db=1.9ms 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] 18:36:17.883 [debug] QUERY OK source="media_items" db=1.7ms idle=0.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 ? [2, 10, 0] 18:36:17.883 [debug] QUERY OK source="media_profiles" db=0.4ms queue=0.2ms 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] 18:36:17.884 [debug] QUERY OK source="sources" db=0.7ms queue=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" = ?) [5] 18:36:17.884 [debug] QUERY OK source="settings" db=0.6ms queue=0.1ms idle=0.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:36:17.884 [debug] QUERY OK source="media_profiles" db=0.7ms queue=0.1ms 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] 18:36:17.884 [debug] QUERY OK source="tasks" db=0.3ms queue=0.1ms idle=0.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 (?,?,?,?)) [4, "executing", "available", "scheduled", "retryable"] 18:36:17.884 [debug] QUERY OK source="settings" db=0.2ms 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 [] 18:36:17.885 [debug] QUERY OK source="sources" db=0.7ms queue=0.1ms idle=0.2ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [2] 18:36:17.885 [debug] QUERY OK source="media_items" db=0.8ms idle=0.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [5] 18:36:17.885 [debug] QUERY OK source="oban_jobs" db=0.4ms idle=0.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" = ?) [7415] 18:36:17.885 [debug] QUERY OK source="settings" db=0.3ms idle=0.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:36:17.886 [debug] QUERY OK source="settings" db=0.4ms idle=0.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:36:17.886 [debug] QUERY OK source="tasks" db=1.3ms queue=0.1ms 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 (?,?,?,?)) [3, "executing", "available", "scheduled", "retryable"] 18:36:17.886 [info] Sent 200 in 5ms 18:36:17.886 [debug] QUERY OK source="settings" db=0.6ms 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 [] 18:36:17.887 [debug] QUERY OK source="oban_jobs" db=0.8ms 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" = ?) [7419] 18:36:17.887 [debug] QUERY OK source="media_items" db=1.9ms idle=0.1ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [5, 10, 0] 18:36:17.887 [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 [] 18:36:17.887 [debug] QUERY OK source="media_items" db=2.4ms queue=0.1ms idle=0.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"))))) [2] 18:36:17.888 [debug] QUERY OK source="settings" db=0.2ms queue=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 [] 18:36:17.888 [debug] QUERY OK source="settings" db=0.5ms 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 [] 18:36:17.888 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [5] 18:36:17.889 [debug] QUERY OK source="sources" db=0.3ms idle=0.9ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."banner_filepath", s0."marked_for_deletion_at", s0."media_profile_id", s0."inserted_at", s0."updated_at" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 18:36:17.889 [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 [] 18:36:17.889 [debug] QUERY OK source="media_items" db=1.7ms idle=0.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 ? [2, 10, 0] 18:36:17.889 [debug] QUERY OK source="media_items" db=0.6ms 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"))))) [5] 18:36:17.891 [debug] QUERY OK source="sources" db=0.5ms 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" FROM "sources" AS s0 WHERE (s0."id" = ?) [3] 18:36:17.891 [info] Sent 200 in 21ms 18:36:17.892 [debug] QUERY OK source="media_items" db=1.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 (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 18:36:17.893 [debug] QUERY OK source="media_items" db=2.8ms idle=1.0ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [5, 10, 0] 18:36:17.894 [info] Sent 200 in 24ms 18:36:17.895 [debug] QUERY OK source="media_items" db=2.3ms 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 ? [3, 10, 0] 18:36:17.896 [debug] QUERY OK source="sources" db=0.8ms 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] 18:36:17.897 [debug] QUERY OK source="media_items" db=0.4ms idle=4.1ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [3] 18:36:17.898 [debug] QUERY OK source="media_items" db=1.0ms idle=4.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 ? [3, 10, 0] 18:36:17.898 [debug] QUERY OK source="media_items" db=9.2ms idle=0.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")))) [4] 18:36:17.899 [debug] QUERY OK source="sources" db=0.2ms 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] 18:36:17.900 [debug] QUERY OK source="media_items" db=0.4ms idle=2.7ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) [3] 18:36:17.900 [debug] QUERY OK source="media_items" db=1.7ms queue=0.1ms idle=3.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] 18:36:17.901 [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 (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) 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] 18:36:17.902 [info] Sent 200 in 21ms 18:36:17.902 [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] 18:36:17.903 [debug] QUERY OK source="media_items" db=0.9ms idle=2.3ms SELECT count(m0."id") FROM "media_items" AS m0 WHERE ((m0."source_id" = ?) AND NOT (m0."media_filepath" IS NULL)) [4] 18:36:17.906 [debug] QUERY OK source="media_items" db=2.8ms 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 ? [4, 10, 0] 18:36:17.907 [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" FROM "sources" AS s0 WHERE (s0."id" = ?) [4] 18:36:17.910 [debug] QUERY OK source="media_items" db=2.3ms idle=6.3ms SELECT count(m0."id") FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_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] 18:36:17.912 [debug] QUERY OK source="media_items" db=1.8ms idle=8.2ms SELECT m0."id", m0."title", m0."uploaded_at", m0."prevent_download", m0."last_error" FROM "media_items" AS m0 INNER JOIN "sources" AS s1 ON s1."id" = m0."source_id" INNER JOIN "media_profiles" AS m2 ON m2."id" = s1."media_profile_id" WHERE ((m0."source_id" = ?) AND (NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (((((NOT (NOT (m0."media_filepath" IS NULL)) AND NOT (m0."prevent_download" = 1)) AND ((s1."download_cutoff_date" IS NULL) OR date(m0."uploaded_at") >= s1."download_cutoff_date")) AND CASE WHEN shorts_behaviour = 'only' AND livestream_behaviour = 'only' THEN livestream = true OR short_form_content = true WHEN shorts_behaviour = 'only' THEN short_form_content = true WHEN livestream_behaviour = 'only' THEN livestream = true WHEN shorts_behaviour = 'exclude' AND livestream_behaviour = 'exclude' THEN short_form_content = false AND livestream = false WHEN shorts_behaviour = 'exclude' THEN short_form_content = false WHEN livestream_behaviour = 'exclude' THEN livestream = false ELSE true END ) AND ((s1."title_filter_regex" IS NULL) OR regexp_like(m0."title", s1."title_filter_regex"))) AND (((s1."min_duration_seconds" IS NULL) OR duration_seconds >= s1."min_duration_seconds") AND ((s1."max_duration_seconds" IS NULL) OR duration_seconds <= s1."max_duration_seconds"))))) ORDER BY m0."uploaded_at" DESC LIMIT ? OFFSET ? [4, 10, 0] 18:36:17.913 [info] Sent 200 in 32ms 18:36:18.486 [info] GET /app_info 18:36:18.486 [debug] Processing with PinchflatWeb.Settings.SettingController.app_info/2 Parameters: %{} Pipelines: [:browser] 18:36:18.487 [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 [] 18:36:18.487 [debug] QUERY OK source="settings" db=0.1ms idle=579.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:18.487 [debug] QUERY OK source="settings" db=0.1ms idle=577.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:18.488 [debug] QUERY OK source="settings" db=0.1ms idle=576.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:18.488 [debug] QUERY OK source="settings" db=0.1ms idle=43.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:36:18.489 [info] Sent 200 in 2ms 18:36:18.638 [info] GET /sources 18:36:18.638 [debug] Processing with PinchflatWeb.Sources.SourceController.index/2 Parameters: %{} Pipelines: [:browser] 18:36:18.639 [debug] QUERY OK source="settings" db=0.3ms idle=151.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:18.639 [debug] QUERY OK source="settings" db=0.1ms idle=151.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:18.639 [debug] QUERY OK source="settings" db=0.0ms idle=151.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:18.640 [debug] QUERY OK source="settings" db=0.1ms idle=151.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:36:18.640 [debug] QUERY OK source="settings" db=0.1ms idle=151.8ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:18.646 [debug] QUERY OK source="sources" db=5.1ms idle=2.0ms 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)) [] 18:36:18.651 [debug] QUERY OK source="sources" db=4.6ms 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] 18:36:18.654 [info] Sent 200 in 15ms 18:36:18.939 [info] GET /settings 18:36:18.940 [debug] Processing with PinchflatWeb.Settings.SettingController.show/2 Parameters: %{} Pipelines: [:browser] 18:36:18.940 [debug] QUERY OK source="settings" db=0.3ms idle=300.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:36:18.941 [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 [] 18:36:18.941 [debug] QUERY OK source="settings" db=0.1ms idle=300.4ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:36:18.942 [debug] QUERY OK source="settings" db=0.1ms idle=295.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:36:18.942 [info] Sent 200 in 3ms 18:36:24.301 [info] {"source":"oban","duration":975,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:36:54.304 [info] {"source":"oban","duration":2048,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:37:00.825 [info] {"source":"oban","duration":283,"event":"plugin:stop","plugin":"Oban.Plugins.Cron","jobs":[]} 18:37:19.617 [info] GET /sources/4/force_index 18:37:19.617 [info] GET /sources/2/force_index 18:37:19.617 [info] GET /sources/3/force_index 18:37:19.617 [info] GET /sources/7/force_metadata_refresh 18:37:19.618 [debug] QUERY OK source="settings" db=0.2ms idle=725.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:37:19.618 [debug] QUERY OK source="settings" db=0.3ms idle=1051.1ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:37:19.618 [debug] QUERY OK source="settings" db=0.4ms idle=1725.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:37:19.618 [debug] QUERY OK source="settings" db=0.5ms idle=1725.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:37:19.618 [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 [] 18:37:19.618 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 18:37:19.618 [debug] QUERY OK source="settings" db=0.3ms 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 [] 18:37:19.618 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 18:37:19.618 [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 [] 18:37:19.618 [debug] QUERY OK source="settings" db=0.5ms 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 [] 18:37:19.618 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 18:37:19.618 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 18:37:19.618 [error] #PID<0.218721.0> running PinchflatWeb.Endpoint (connection #PID<0.218717.0>, stream id 1) terminated Server: pf.kjin.cloud: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.218717.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/force_metadata_refresh", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 53122}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218721.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "216.73.216.33"} ], 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", "GIQ6pkQVBZNn6WkAAAPG"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218717.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/force_metadata_refresh", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 53122}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, 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.218717.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/7/force_metadata_refresh", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 53122}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218721.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "216.73.216.33"} ], r (truncated) 18:37:19.618 [error] #PID<0.218720.0> running PinchflatWeb.Endpoint (connection #PID<0.218715.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /sources/3/force_index ** (exit) an exception was raised: ** (KeyError) key :flash not found in: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/3/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218715.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/force_index", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 53126}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218720.0>, params: %{}, path_info: ["sources", "3", "force_index"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "216.73.216.33"} ], request_path: "/sources/3/force_index", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQ6pkQU34c3CycADSpD"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218715.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/force_index", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 53126}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/3/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218715.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/force_index", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 53126}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218720.0>, params: %{}, path_info: ["sources", "3", "force_index"], path_params: %{}, port: 80, private: %{ PinchflatWeb.Router => [], :plug_session_fetch => #Function<1.49469887/1 in Plug.Session.fetch_session/1>, :before_send => [#Function<0.106864063/1 in Plug.Telemetry.call/2>], :phoenix_endpoint => PinchflatWeb.Endpoint, :phoenix_router_url => "https://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "216.73.216.33"} ], request_path: "/sources/3/force_index", resp_body: nil, resp_cookies: %{}, (truncated) 18:37:19.619 [error] #PID<0.218719.0> running PinchflatWeb.Endpoint (connection #PID<0.218714.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /sources/2/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/2/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218714.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_index", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 53128}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218719.0>, params: %{}, path_info: ["sources", "2", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "216.73.216.33"} ], request_path: "/sources/2/force_index", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQ6pkQUqU8acLwALS_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.218714.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_index", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 53128}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/force_index (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218714.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_index", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 53128}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218719.0>, params: %{}, path_info: ["sources", "2", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "216.73.216.33"} ], request_path: "/sources/2/force_index", resp_body: nil, resp_cookies: %{}, (truncated) 18:37:19.619 [error] #PID<0.218718.0> running PinchflatWeb.Endpoint (connection #PID<0.218716.0>, stream id 1) terminated Server: pf.kjin.cloud: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.218716.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_index", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 53130}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218718.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "216.73.216.33"} ], request_path: "/sources/4/force_index", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQ6pkQUqU_XA3cAGu5C"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218716.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_index", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 53130}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, 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.218716.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_index", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 53130}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218718.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "216.73.216.33"} ], request_path: "/sources/4/force_index", resp_body: nil, resp_cookies: %{}, (truncated) 18:37:19.628 [info] GET /sources/3/force_metadata_refresh 18:37:19.629 [debug] QUERY OK source="settings" db=0.2ms idle=10.7ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:37:19.629 [debug] QUERY OK source="settings" db=0.2ms idle=10.9ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_sleep_interval_seconds", s0."download_throughput_limit", s0."restrict_filenames", s0."video_codec_preference", s0."audio_codec_preference" FROM "settings" AS s0 LIMIT 1 [] 18:37:19.629 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 18:37:19.630 [error] #PID<0.218723.0> running PinchflatWeb.Endpoint (connection #PID<0.218722.0>, stream id 1) terminated Server: pf.kjin.cloud: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.218722.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/force_metadata_refresh", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 53134}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218723.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "216.73.216.33"} ], 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", "GIQ6pkTDAdkbB98ALTAB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218722.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/force_metadata_refresh", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 53134}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, 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.218722.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/3/force_metadata_refresh", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 53134}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218723.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "216.73.216.33"} ], r (truncated) 18:37:19.780 [info] GET /sources/4/force_metadata_refresh 18:37:19.780 [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 [] 18:37:19.780 [debug] QUERY OK source="settings" db=0.0ms idle=162.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:37:19.781 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 18:37:19.781 [error] #PID<0.218725.0> running PinchflatWeb.Endpoint (connection #PID<0.218724.0>, stream id 1) terminated Server: pf.kjin.cloud: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.218724.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_metadata_refresh", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 53138}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218725.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "216.73.216.33"} ], 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", "GIQ6pk3K7OhU69kALTBB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218724.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_metadata_refresh", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 53138}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, 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.218724.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/4/force_metadata_refresh", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 53138}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218725.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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "216.73.216.33"} ], r (truncated) 18:37:24.306 [info] {"source":"oban","duration":1073,"event":"plugin:stop","plugin":"Oban.Plugins.Pruner","pruned_count":0} 18:37:24.779 [info] GET /sources/2/force_metadata_refresh 18:37:24.780 [debug] QUERY OK source="settings" db=0.2ms idle=1887.2ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:37:24.780 [debug] QUERY OK source="settings" db=0.1ms idle=1887.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:37:24.780 [debug] Converted error Phoenix.Router.NoRouteError to 404 response 18:37:24.780 [error] #PID<0.218727.0> running PinchflatWeb.Endpoint (connection #PID<0.218726.0>, stream id 1) terminated Server: pf.kjin.cloud:80 (http) Request: GET /sources/2/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/2/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218726.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_metadata_refresh", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 53146}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218727.0>, params: %{}, path_info: ["sources", "2", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "216.73.216.33"} ], request_path: "/sources/2/force_metadata_refresh", resp_body: nil, resp_cookies: %{}, resp_headers: [ {"cache-control", "max-age=0, private, must-revalidate"}, {"x-request-id", "GIQ6p3fFiJBYM8YALTCB"} ], scheme: :http, script_name: [], secret_key_base: :..., state: :unset, status: nil }, router: PinchflatWeb.Router }, status: 404, stack: [ {PinchflatWeb.Router, :call, 2, [file: ~c"deps/phoenix/lib/phoenix/router.ex", line: 541]}, {PinchflatWeb.Endpoint, :plug_builder_call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {PinchflatWeb.Endpoint, :call, 2, [file: ~c"lib/pinchflat_web/endpoint.ex", line: 1]}, {Plug.Cowboy.Handler, :init, 2, [file: ~c"lib/plug/cowboy/handler.ex", line: 11]}, {:cowboy_handler, :execute, 2, [file: ~c"/app/deps/cowboy/src/cowboy_handler.erl", line: 37]}, {:cowboy_stream_h, :execute, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 310]}, {:cowboy_stream_h, :request_process, 3, [file: ~c"/app/deps/cowboy/src/cowboy_stream_h.erl", line: 299]}, {:proc_lib, :init_p_do_apply, 3, [file: ~c"proc_lib.erl", line: 329]} ], kind: :error, conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218726.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_metadata_refresh", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 53146}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{ reason: %Phoenix.Router.NoRouteError{ plug_status: 404, message: "no route found for GET /sources/2/force_metadata_refresh (PinchflatWeb.Router)", conn: %Plug.Conn{ adapter: {Plug.Cowboy.Conn, %{ pid: #PID<0.218726.0>, port: 80, scheme: "http", version: :"HTTP/1.1", path: "/sources/2/force_metadata_refresh", host: "pf.kjin.cloud", peer: {{172, 23, 0, 1}, 53146}, bindings: %{}, sock: {{172, 23, 0, 2}, 8945}, ref: PinchflatWeb.Endpoint.HTTP, cert: :undefined, headers: %{ "accept" => "*/*", "accept-encoding" => "gzip, br, zstd, deflate", "connection" => "close", "host" => "pf.kjin.cloud", "user-agent" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)", "x-forwarded-by" => "192.168.0.15", "x-forwarded-port" => "443", "x-forwarded-proto" => "https", "x-real-ip" => "216.73.216.33" }, method: "GET", body_length: 0, path_info: :undefined, qs: "", host_info: :undefined, has_body: false, streamid: 1 }}, assigns: %{}, body_params: %{}, cookies: %{}, halted: false, host: "pf.kjin.cloud", method: "GET", owner: #PID<0.218727.0>, params: %{}, path_info: ["sources", "2", "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://pf.kjin.cloud", :phoenix_router => PinchflatWeb.Router, :phoenix_request_logger => {"request_logger", "request_logger"} }, query_params: %{}, query_string: "", remote_ip: {172, 23, 0, 1}, req_cookies: %{}, req_headers: [ {"accept", "*/*"}, {"accept-encoding", "gzip, br, zstd, deflate"}, {"connection", "close"}, {"host", "pf.kjin.cloud"}, {"user-agent", "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"}, {"x-forwarded-by", "192.168.0.15"}, {"x-forwarded-port", "443"}, {"x-forwarded-proto", "https"}, {"x-real-ip", "216.73.216.33"} ], r (truncated) 18:37:29.782 [info] GET /media_profiles/1 18:37:29.782 [debug] Processing with PinchflatWeb.MediaProfiles.MediaProfileController.show/2 Parameters: %{"id" => "1"} Pipelines: [:browser] 18:37:29.783 [debug] QUERY OK source="media_profiles" db=0.1ms idle=1890.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] 18:37:29.783 [debug] QUERY OK source="sources" db=0.3ms idle=1890.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", 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] 18:37:29.784 [debug] QUERY OK source="settings" db=0.2ms idle=1197.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:37:29.784 [debug] QUERY OK source="settings" db=0.1ms 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 [] 18:37:29.785 [debug] QUERY OK source="settings" db=0.1ms idle=196.6ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:37:29.786 [info] Sent 200 in 4ms 18:37:30.474 [info] GET /sources/5/edit 18:37:30.474 [debug] Processing with PinchflatWeb.Sources.SourceController.edit/2 Parameters: %{"id" => "5"} Pipelines: [:browser] 18:37:30.475 [debug] QUERY OK source="sources" db=0.2ms idle=691.7ms SELECT s0."id", s0."enabled", s0."uuid", s0."custom_name", s0."description", s0."collection_name", s0."collection_id", s0."collection_type", s0."index_frequency_minutes", s0."fast_index", s0."cookie_behaviour", s0."download_media", s0."last_indexed_at", s0."download_cutoff_date", s0."retention_period_days", s0."original_url", s0."title_filter_regex", s0."output_path_template_override", s0."min_duration_seconds", s0."max_duration_seconds", s0."series_directory", s0."nfo_filepath", s0."poster_filepath", s0."fanart_filepath", s0."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] 18:37:30.475 [debug] QUERY OK source="media_profiles" db=0.2ms idle=691.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" [] 18:37:30.476 [debug] QUERY OK source="settings" db=0.0ms idle=691.5ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:37:30.476 [debug] QUERY OK source="settings" db=0.1ms idle=691.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:37:30.476 [debug] QUERY OK source="settings" db=0.1ms idle=691.3ms SELECT s0."id", s0."onboarding", s0."pro_enabled", s0."yt_dlp_version", s0."apprise_version", s0."apprise_server", s0."youtube_api_key", s0."route_token", s0."extractor_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:37:30.478 [info] Sent 200 in 4ms